본문 바로가기

IT/웹 해킹(Web Hacking)

webhacking.kr [문제 22번]




오늘은 22번 문제를 풀어보겠다.


사실은 며칠전에 풀었지만,


포스팅하지 못하였다.





해당 문제의 배점은 500point이며,


점수 배점이 높은거로 봤을 때,


sql injection문제가 아닐까 조심스레 예상해본다.






해당 페이지 접속시, 다음과 같은 로그인 폼이 보인다.


힌트에 유의해야 할 부분이 있는 데,



if($id=='admin') echo("good! Password is $solution");



해당 부분에서


로그인한 아이디($id)가 'admin'이면


패스워드를 출력하는 것으로 확인된다.



먼저 해당 입력폼의 임의의 아이디를 넣고 로그인해보자.





역시나


Wrong!


이라는 메세지를 보여주면서 로그인 실패한다.



한번 회원가입해볼까?





username은 'lidron'으로 

password는 'crack'으로 


가입하였다.



이제 가입한 해당 아이디를 이용하여 로그인 하여보자.





정상적으로 로그인 되었음을 확인하였다.


한가지 다른점이 있다면,


user key : 3a1cfcd94e95c84cd6dfa63a3748d580


라는 메세지를 보여준다.



이게 뭘까?


고민하여보다가 특정한 문자열이 암호화 된것으로 예상된다.



일단 형태가 MD5형태로 암호화 된 것 같으므로, 먼저


해당 암호화된 문자열 '3a1cfcd94e95c84cd6dfa63a3748d580'을 디크립트(복호화)하여 확인해보자.





Decode!






해당 문자열을 복호화한 결과가


'crackzombie'라는 문자열이 나왔다.




예상컨대, 해당 비밀번호에 zombie라는 문자열이 추가되어 출력되는 것으로 확인하였다.




허나 이런 정보로는 우리는 무언가를 알아내지 못한다.



결과적으로 우리가 로그인해야 할 아이디는 admin이고 admin의 비밀번호를 알아야 해당 문제를 풀 수 있다.




다시 admin으로 회원가입하여보자.







이미 가입되어 있다고 한다.



인젝션을 이용하여,


해당 취약점을 찾아내보자,




1) 조건이 참인 쿼리를 날릴 경우








2) 조건이 거짓인 쿼리를 날릴 경우









취약점을 파악했다.


조건이 참인 경우를 넘기면, 'Wrong password!'를 출력하고,


조건이 거짓인 경우를 넘기면, 'Wrong!'을 출력한다.



해당 결과를 통해 Blind Sql Injection이 취약점이 있는 것으로 확인된다.



먼저 해당 스크립트를 작성하기전에, 비밀번호의 길이를 알아내보자.




비밀번호의 변수이름은 pw로 확인되었다.



길이를 알아내기위해 순차적으로 1부터 증가시킨 결과,






해당 비밀번호의 길이는 32인 것을 확인할 수 있다.



스크립트를 작성하여,


해당 비밀번호를 파악해보자.



허나 스크립트를 작성하기전 중요한 것이 한가지 있다.



지금까지의 인젝션 문제는 GET방식으로 데이터를 전달하였으나, 지금은 POST방식으로 데이터를 전달한다.


그러므로 해당 부분을 고려하여 프로그래밍 해야하는데,


다행히도 구글링해본결과


해당 스크립트를 미리 작성해놓은신 분이 있었다. (Gamja님 감사합니다 '_')






해당 스크립트의 결과로



다음과 같은 MD5로 인크립트(암호화)된 문자열이 출력된다.



다시한번 해당 문자열을 복호화 해보자.








결과적으로 'rainbowzombie'라는 문자열이 출력된다.



아까 해당 비밀번호에 추가적으로 'zombie'라는 문자열이 추가적으로 입력되는 것으로 확인하였으니,


실제 비밀번호는 'rainbow'이다.



로그인 해보자.







문제풀이 완료





해당 문제로 인해 랭킹 1000위권 안에 진입하였다.


기록한다.









'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글

webhacking.kr [문제 24번]  (0) 2018.03.31
webhacking.kr [문제 23번]  (0) 2018.03.31
webhacking.kr [문제 21번]  (6) 2018.03.25
webhacking.kr [문제 20번]  (0) 2018.03.17
webhacking.kr [문제 18번]  (0) 2018.03.13