最近沉迷于爆破= =
题目链接“http://ctf5.shiyanbar.com/ppc/sd.php
给你一个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~