본문 바로가기
Wargame/webhacking.kr

webhacking.kr 29번

by morae23 2019. 1. 29.

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

댓글