21번 문제를 클릭하면 나오는 화면이다
대놓고 블라인드 sql인젝션이라고 알려줬다.
아무값이나 입력해보자
주소창에 이렇게 get방식으로 no, id, pw의 값을 줄 수 있음을 알 수 있다.
소스를 보면 id와 pw는 hidden으로 보내지고 no만 입력값이 넘어간다.
no는 숫자일것 같으니 숫자를 넣어보자
1일때 참이된다. blind sql injection이 되는지 확인해보자
True가 뜬다. False도 뜨는지 확인해보자
오오오오 드디어 뭔가를 넣을 수 있다.
좌항 우항이 모두 참이어야지만 참이 되는것을 이용해서 풀어야한다.
우선 id의 길이부터 보면 5임을 알 수 있다.
5면......
admin?
id='admin' 해보자
응? 아니라고?
LOS 1번문제를 풀었던 것처럼 substring(substr)을 이용해보자
a보다 큰게 아니라고 한다.
다른것도 다 몇번해봤지만 이거는 다른 문제가 있다고 볼 수 있다.
아마 쿼터문제가 아닌가 싶다.
magic_quotes_gpc
이 기능으로 인해서 막혀진것이라 추측된다.
쿼터를 사용할 수 없으니 문자를 확인하기 위해선 아스키코드로 확인해야할것 같다.
ascii함수를 이용해서 첫글자를 알아보자
범위를 좁혀가면서 알아낸 첫글자는 g
g...g.......guest?
확인해보니 맞았다....
지금껏 guest계정을 확인하고 있었던 것이다.
pw의 길이도 5였고 id=pw하니 True가 뜬것을 보아
guest의 계정정보는 아래와 같다.
no=1 & id=guest & pw=guest
쉽게 다른 넘버를 찾을 수 있었다.
no=2
id의 길이는 역시 5!
ㅎ........admin?
확신을 가지고 admin을 확인해보자
admin모두 True가 뜸을 확인할 수 있었다.
이번에는 비밀번호를 알아보자
19글자...?
그래 이젠 익숙해
하나씩 해보자
1 = b
2 = l
3 = i
4 = n
....? blind sql injection?
4글자로 추출해버렸다
공백은 언더바(_)일것같으니 적당하게 넣어주면!
될리가 없습니다.....
5 = d
6 = s
이건 진짜다.
띄어쓰지 않는것!
듬성듬성 체크해보니 틀림없었다.
blindsqlinjection !!!!!!!!! 두글자가 부족하지만
그정도 노가다는 거뜬하다
KK
'Wargame > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr]25번 (0) | 2017.07.31 |
---|---|
[Webhacking.kr]27번 (0) | 2017.07.31 |
[Webhacking.kr]23번 (0) | 2017.07.31 |
[Webhacking.kr]20번 (0) | 2017.07.31 |
[Webhacking.kr]18번 (0) | 2017.07.31 |