【fairy】實驗吧web題——爆破
阿新 • • 發佈:2018-12-11
最近沉迷於爆破= =
給你一個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~