본문으로 바로가기

[Webhacking.kr]21번

category Wargame/webhacking.kr 2017. 7. 31. 20:20


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