Webhacking.kr
#29
29번 문제를 열면 아래와 같은 힌트를 볼 수 있다.
우선 파일을 업로드해보았다.
위와 같이 Done이라는 메시지와 함께
time, ip, file 정보가 출력되는 것을 볼 수 있다.
힌트에서
select password from c29_tb라고 되어 있는 걸을 보면
파일을 업로드할 때, 파일 이름, time, ip정보가 c29_tb 테이블에 저장될 것임을 알 수 있다.
쿼리문은 아마 아래와 유사한 형태를 가질 것으로 추정된다.
Insert into c29_tb
Values (time, ip, file)
이 때, file 이름을 이용하여 select 문을 수행하도록 하면 패스워드를 얻을 수 있을 듯하다.
그런데 time, ip, file이 실제 쿼리문에서 어떤 순서로 되어 있는 지를 알 수 없기 때문에 먼저 이 순서를 알아내야 한다.
먼저 file이 가장 마지막에 있는 경우를 가정하면
(time, ip, file) 나 (ip, time, file)과 같은 형태가 될 것이다.
만약 이와 같은 상황이면
a’) -- 를 입력했을 때 file 이름이 a로 입력되며 정상적으로 작동해야한다. (필터링이 작동한 것이 아니라면)
그런데 아래와 같이 upload error!가 출력된다.
그리고 file이 두 번째 인자였을 경우로 가정하여
a',1) -- 를 입력해도 upload error!가 출력된다.
물론 이 것을 근거로 두 번째, 세 번째 인자가 아니라고 단정지을 수는 없지만 첫 번째 인자로 가정하고 넣어보면 아래와 같이 Done이라는 메시지를 볼 수 있다.
따라서 이 경우에는 (file, ip, time) 또는 (file, time, ip)일 것이라고 추측할 수 있다.
aaaaaaa',1,[YOUR_IP]),('tttttt
로 입력하면(ip는 hex값) 아래와 같이 출력된다.
따라서 (file, time, ip) 순인 것을 알 수 있다.
이제 time 자리에 select 문을 넣어주면 된다.
aaaaaaa',(select password from c29_tb), [YOUR_IP]),('tttttt
와 같이 입력하니
아래와 같이 clear할 수 있었다.
'Wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 40번 (0) | 2019.02.01 |
---|---|
webhacking.kr 33번 (0) | 2019.02.01 |
webhacking.kr 15번 (0) | 2019.01.29 |
webhacking.kr 13번 (0) | 2019.01.29 |
webhacking.kr 9번 (0) | 2019.01.29 |
댓글