old-29 풀이

2024. 5. 2. 03:11webhacking.kr

728x90

메인 페이지
업로드용 파일
testfile.txt 업로드 화면

파일 이름, 업로드 시간, IP가 작성되는 걸 확인할 수 있습니다

페이지 소스에서는 확인할 수 있는게 없으니, 프록시로 패킷을 잡아보겠습니다 

 

Burp Suite로 잡은 패킷

패킷의 form-data 부분에 name과 filename이 들어가 있습니다

filename에 인젝션 구문을 넣어주는 형식이겠지만, 아직은 구조를 모르니 값을 넣어가며 테스트해야 할 것 같네요

 

업로드 확인

hello', '50', '[작성자의 IP]');# 으로 값을 넣어주니 제대로 업로드가 됐습니다

들어가는 순서가 filename, time, ip니까 아래와 같은 구조로 되어있겠네요

INSERT INTO [table_name] VALUES(filename, time, ip);

VALUES에 들어가는 값들이 어디에 위치하는지 알기 위해 DB 이름을 추출해 주겠습니다

 

DB 이름은 chall29

filename="hello', '1234', '[IP Address]'),((SELECT database()), '1234', '[IP Address]')#"

이런 구문으로 DB 이름을 추출해 봤습니다

같은 방식으로 쿼리만 바꿔서 테이블과 컬럼 이름, 그 외 정보들도 추출해 주겠습니다

 

Table은 files와 flag_congratz 2개

2개의 테이블이 나왔습니다

딱 봐도 수상해 보이는 flag_congratz의 컬럼을 조회해 보겠습니다

 

flag_congratz 테이블의 컬럼은 flag 단 하나

이제 컬럼의 값들을 가져오겠습니다

 

컬럼의 값이 FLAG / FLAG 획득 완료
문제 풀이 성공

 

728x90

'webhacking.kr' 카테고리의 다른 글

NotSQL 풀이 (PW = FLAG)  (0) 2024.05.08
old-40 풀이  (0) 2024.05.04
old-55 풀이  (0) 2024.04.15
old-13 풀이  (0) 2024.04.11
g00gle2 풀이  (0) 2024.04.10