1. 程式人生 > >【fairy】實驗吧web題——爆破

【fairy】實驗吧web題——爆破

最近沉迷於爆破= =

給你一個sha1值,它是0-100000之間的整數的md5值再求取sha1值,請在2秒內提交該整數值

題幹表述的很清楚,就是讓你碰撞出hash值對應的原來的值。

emmmm。又到了寫指令碼的時候了!!!

我們很容易發現提交資料為post請求,抓包分析一下post資料的引數:

我們看見除了inputNumber欄位接受你所填寫的資料,還有個submit欄位。

ok,一切分析清楚,最後的流程:

獲取介面html→正則出hash值→迴圈碰撞→碰撞出結果後構建post→post資料→獲取返回html即可獲取flag

最後附上指令碼:

#coding=utf-8
import requests
import hashlib
import re

url="http://ctf5.shiyanbar.com/ppc/sd.php"
se=requests.Session()
sqlurl=se.get(url)
sqlurl.encoding='utf-8'
print sqlurl.text

hash = re.compile(r'color:red">(.*?)</div>', re.DOTALL).findall(sqlurl.text)
hash1=hash[0]
print hash1

for i in range(0,100000):
	k=str(i)
	hashmd5 = hashlib.md5(k).hexdigest()
	hashsha1 = hashlib.sha1(hashmd5).hexdigest()
	if hashsha1 == hash1:
		post = {'inputNumber':i,'submit':'%E6%8F%90%E4%BA%A4'}
		flag=se.post(url,data=post)
		flag.encoding='utf-8'
		print flag.text

over~