[webhacking.kr] Challenge 2번(500) 문제풀이
![](https://t1.daumcdn.net/cfile/tistory/246F5B3E57C63B7A02)
첫 화면을 보니 홍길동(?) 으로 보이는 사람이 명상을 하고 있네요
이 페이지에서 힌트를 얻어 보고자 소스를 한번 열어 봤습니다..
![](https://t1.daumcdn.net/cfile/tistory/223ADD3E57C63B7B29)
소스를 열어보니 웬 주석처리 된 시간이 있네요
일종의 힌트 같습니다
하지만 일자는 같지만 현재시간하고는 다르다는 것을 알 수 있습니다.
그리고 소스를 자세히 들여다보니
어떤 좌표에 admin/ 이라는 링크가 걸려있군요..
저부분이 심상치 않네요
페이지안에 특정한 좌표를 클릭하면
admin 페이지로 넘어간다는 소리 같습니다.
![](https://t1.daumcdn.net/cfile/tistory/212EF83E57C63B7C2E)
어디있나 했더니 바로 이 '용' 머리 부분을 클릭했더니
admin 페이지로 들어갈 수 있었습니다
역시 범상치 않아 보이는군요..
![](https://t1.daumcdn.net/cfile/tistory/2421263E57C63B7C39)
용머리 부분을 클릭해서 admin 페이지에 들어온 모습입니다
무언가 로그인을 해야 될 것 같습니다만
SQL injection 을 시도해보았지만 쉽지 않네요
흠.. 힌트를 다른데서 구해봐야 겠군요
다시 홍길동 아저씨가 명상하고 있는 페이지로 돌아와
다른 부분에서 힌트를 얻어 봅시다..
ABOUT / MEMBERS / RESEARCH 등의
다른 페이지에 들어가 보았지만
힌트를 얻을 수 없었던 와중에 BOARD를 눌러보니!!
![](https://t1.daumcdn.net/cfile/tistory/2529533E57C63B7D31)
요런 모습을 볼 수 있었습니다
oldzombie 님께서 반갑게 인사를 해주시는군요
저기에 무언가가 있어 보입니다
일단 한번 들어가봅시다..
![](https://t1.daumcdn.net/cfile/tistory/2523363E57C63B7D36)
들어가보니 비밀글이라며
수상한 폼이 있고 쿼리를 보내라는군요... 흠
이 부분에서 쿼리를 날리면 뭔가 얻을 수 있을것 같습니다만
어떻게 쿼리를 보내지.. 하던 와중에 쿠키값을 보니
![](https://t1.daumcdn.net/cfile/tistory/215F673E57C63B7E0D)
(Cooxie 툴을 이용함 )
세션ID를 나타내는 PHPSESSID 와
time이라는 수상한 값이 들어가 있네요..
이 time이라는 것이 방금전 소스에서 보았던 시간과 연관이 있어 보입니다..
time값을 이용해 injection을 시도해 보았습니다
![](https://t1.daumcdn.net/cfile/tistory/2566273E57C63B7E08)
![](https://t1.daumcdn.net/cfile/tistory/230E1B4557C63B7F1E)
그랬더니 방금전 메인화면에 소스부분에 주석처리된 시간부분이 수정되었습니다
DB와 연동이 되어있는 듯 보입니다
이부분을 통해 전 Blind SQL Injection을 시도해봤습니다
![10.png](http://www.diano.kr/files/attach/images/183/982/eda9d4964cc26c2dd085a07c25ad4fac.png)
방금전과는 다르게 참(1=1)인 값을 넣어봤더니
![](https://t1.daumcdn.net/cfile/tistory/267BF74557C63B8029)
주석처리 된 시간이 다시 수정되어있네요..
참(1=1)일 때는 시간 뒤에 부분이 1로 나타나고
거짓(1=0)일 때는 시간 뒤에 부분이 0으로 나타나고 있는 것을 확인할 수 있으며
이 취약점을 통해 Blind SQL Injection을 통한 공격을 수행할 수 있었습니다
하지만
테이블 명을 알 수 없어 여러번의 뒤적뒤적 거리며 삽질을 하던 끝에...
![](https://t1.daumcdn.net/cfile/tistory/25095D4557C63B8020)
테이블명을 확인 할 수 있었습니다
bbs 페이지의 테이블명 : FreeB0aRd
admin 페이지의 테이블명 : admin
테이블명도 알아 냈으니 password를 알아내 보겠습니다..
time 쿠키값 뒤에 and(select length(password) from FreeB0aRd)=1 을 추가한 뒤
![](https://t1.daumcdn.net/cfile/tistory/217E784557C63B8127)
소스를 확인해보면 ..
![](https://t1.daumcdn.net/cfile/tistory/2511F64557C63B811B)
참 인것을 확인 할 수 있는데
그러므로써 password는 9글자라는 사실을 알 수 있었습니다
이와 같은 방법으로 admin 역시 password의 길이를 알아 낼 수 있었으며
FreeB0aRd : 9자리
admin : 10자리
password의 길이를 알아 낼 수 있었습니다
이제 password를 substring과 ascii를 통해 글자를 한글자씩 비교하며 password를 알아내보겠습니다
하지만 이 방법은 너무 노가다 방식이라 (ascii 코드만해도 한두개가 아니므로 비추천)
저는 다른 블로그를 참고하여
파이썬(Python)을 이용해 코드를 짜서
패스워드를 알아낼 수 있었습니다
(참고사이트 : http://rootnix.in/80)
코드공유 : [webhacking]ch2_PythonCode.zip
![](https://t1.daumcdn.net/cfile/tistory/247FE34557C63B8226)
이런식으로 password를 알아 낼 수 있었습니다
패스워드는 모자이크 처리..
admin 역시 똑같은 방법으로 해봅시다
![](https://t1.daumcdn.net/cfile/tistory/216E2D4057C63B821D)
이제 패스워드를 두개 모두 알아냈으니 클리어 해봅시다..
게시판의 게시글에 얻어낸 비밀번호를 입력해보니..
![](https://t1.daumcdn.net/cfile/tistory/254F724057C63B8330)
![](https://t1.daumcdn.net/cfile/tistory/2453B04057C63B8331)
admin manual 이 나오는데 이것은 그냥 텍스트가 아니고 링크가 걸려있는 파일입니다
이것을 다운 받습니다..
다운받아서 압축을 풀어보려 하니..
![](https://t1.daumcdn.net/cfile/tistory/2765C54057C63B8422)
이건 뭐지..? 하는 순간
admin password가 떠오릅니다
admin page에 가서 패스워드를 입력하면
![](https://t1.daumcdn.net/cfile/tistory/265EDA4057C63B8421)
manual 패스워드를 알 수 있고
manual 압축을 풀게 되면..
![](https://t1.daumcdn.net/cfile/tistory/245F684057C63B8526)
password를 알아 낼 수 있었습니다..
blind sql injection을 할 수 있느냐 없느냐가
이 문제의 관건이었던것 같습니다
500점 짜리라 그런지 난이도가 조금 있군요![msn030.gif](http://www.diano.kr/modules/editor/components/emoticon/tpl/images/msn/msn030.gif)
어쨋든 2번문제 기분좋게 Clear!!