본문 바로가기
Wargame/webhacking.kr

webhacking.kr 51번

by morae23 2019. 1. 29.

51번 문제를 보면 아래와 같은 admin page를 볼 수 있다.

 

 



 

 

index.phps를 보면 아래와 같은 코드가 있다.

 

 



 

 

solve()를 호출하기 위해서는 query문 결과의 id가 admin이어야 한다.

이에 주석을 시도해보았으나 Wrong이 출력된다.

 

 



 

 

따라서 다른 방법으로 풀어야 하는데,

md5()에서 raw_output을 true로 준 것을 알 수 있다.

 

php 메뉴얼을 보면 md5의 두번째 인자인 raw_output은 default로 false이다. True로 설정할 경우 raw binary format으로 리턴된다.

 

이 점을 이용하여 password를 true로 만들면 clear할 수 있다.

 

 



출처: http://php.net/manual/en/function.md5.php

 

 

pw=’$input_pw’ 에서 $input_pw는 md5 해시값이다.

만약 $input_pw의 값에 ‘=’ 이 포함된다면

pw=’a’=’b’ 와 같이 입력하여 true로 만들 수 있다.

pw=’a’=’b’는 (pw=’a’)=’b’와 같고

이 값은 false=false로 true가 된다.

 

따라서 해시한 결과 값에 ‘=’이 포함되는 인풋을 찾으면 된다.

(이 것은 raw_output을 True로 하였으며 그 결과가 쿼리문에 직접 영향을 주기 때문에 가능하다.)

이를 찾기 위한 코드는 아래와 같다.

 

 



 

 

처음에는 range()를 이용하려 했으나, 실행 시 메모리의 측면을 고려하여 위의 코드로 수정하였다.

 

 



 

 

실행하면 1839431이라는 결과를 얻게 된다.

따라서 id에 admin, pw에 1839431를 입력하면 clear할 수 있다.

 

 



 

 



 

 



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

webhacking.kr 48번  (0) 2019.01.29
webhacking.kr 41번  (0) 2019.01.29
webhacking.kr 53번  (0) 2019.01.29
webhacking.kr 60번  (0) 2019.01.29
webhacking.kr 43번  (0) 2019.01.29

댓글