Webhacking.kr 2번 - blind sql injection
예전 webhaking.kr 1번을 풀고 2번을 도전하고, 블로그도 보면서 풀어보려했는데 아무리 해도 이해가 되지않아 실력이 쌓이면 풀려고 keep하고 있던 문제였습니다.
blind sql injection을 익히고 난 지금 한번 도전했더니 오랜시간이 걸렸고 결국 풀게 되었습니다.
처음부터 설명을 잘 해놓은 블로그가 많기 떄문에 저는 중요한 것 위주로 적겠습니다.
초기화면 입니다. 이 화면을 몇번이나 본줄 모르겠네요... 이젠 안봤으면 좋겠습니다.
상단부에는 홈페이지에서 이동할 수 있는 링크가 걸려있고, 하단부에는 시간이 주석처리 되어있었습니다.
아무래도 지금까지 문제를 풀면서 생긴 감으로 시간이 이 문제의 키라고 생각했습니다.
유일하게 password가 걸려있던 게시판과 admin 페이지, admin은 당연히 걸려있을 줄 알았지만 board까지 걸려있을 줄은 몰랐습니다.
time이라는 쿠키가 생겼습니다. 아까 주석에 해당하는 값인 것 같아요.
스멀스멀 and 연산을 해보고싶은 느낌이 왔습니다. 해보겠습니다.
and 1=1 : 참을 주었을 때 시간이 바뀐 것을 보았습니다. 거짓을 줘볼까요???
자 거짓 값을 주니 또 바뀌었습니다. 참과 거짓, True, False!!! 그렇다면 Blind sql injection을 할 수 있게 되었습니다.
그러기 위해서는 암호가 걸려있는, admin page의 테이블과 Board 테이블을 알아야합니다.
어딘가 있을 줄 알고 한참을 뒤졌는데 안나왔습니다. 그래서 블로그를 찾아보니, 예전에는 힌트로 주어졌다는데,.... 그래서 그냥 가져왔습니다ㅎㅎ(테이블 이름만)
admin 페이지의 테이블은 admin이고
board 페이지의 테이블은 FreeB0aRd 이였습니다.
time의 쿠키값 and (select length(Password) from admin)=10 일 때 참이나왔으므로 password의 길이가 10인걸 알았습니다.
admin 테이블의 패스워스 변수를 어떻게 알았나면, 아무값이나 패스워드로 입력하고 전송되는 값을 봤을 떄 Password 변수로 넣어져서 전송된 것을 볼 수 있었습니다.
위와 같은 식으로 Blind SQLi 를 해주어야 하는데, 너무 오래걸리겠죠?? 그래서 저번에 사용한 코드를 조금 수정하여 사용했습니다(아마 21번이였나....)
python의 urllib 라이브러리를 사용한 코드입니다.
.py파일은 밑에 첨부하겠습니다.
각각 admin과 게시판 게시글의 password를 알 수 있었습니다.
게시판에 패스워드를 입력하면 zip파일 하나를 얻을 수가 있습니다.
하지만 암호가 걸려있는데요. 암호는 admin 페이지를 password를 입력하면 알 수 있습니다.
저 html 파일에 답을 인증할 수 있는 인증키가 적혀있습니다.
이제 목표로 잡았던 문제를 풀었습니다....바쁜와중에 틈틈히 풀었는데 앞으로 어려운 문제많겠지만 계속 틈틈히 풀어보겠습니다!!
Webhacking.kr_2.py
0 개의 댓글