实验吧 速度爆破
题目链接:http://ctf5.shiyanbar.com/ppc/sd.php
这道题很简单呀,一点斜的歪的都没有,只是我一个小菜鸟在完成时会遇到一些小麻烦,几度想去看wp,最后还是忍住了。。。
思路很简单
1、 先抓取页面里生成的hash值
2、 循环生成1-100000的md5再sha1的值
3、 与网页的值判断相等,提交给网页数值,网页返回flag
遇到的问题
我使用的是python3.5
在使用hashlib模块的时候会出现这样的报错
TypeError: Unicode-objects must be encoded before hashing
这是传入的编码有问题
这里有前人的总结,很好,药到病除。。
针对于字母和数字与汉字的不同解决方法。。
import hashlib data1 = 'sada' #####字母和数字 m = hashlib.md5(data1.encode('utf-8')) print(m.hexdigest()) data='我是' #####中文 b = hashlib.md5(data.encode('gb2312')) print(b.hexdigest())
还有一个问题就是提交时间,总是超时,好气啊。。。
后来我明白了,因为我把生成的hash值都print出来了,硬生生的拖慢了提交的时间。。
下面是脚本:
import requests import re import hashlib def jiemi(start,end,key,s): for i in range(start,end): m = hashlib.md5(str(i).encode('utf-8')) flag = m.hexdigest() flag = hashlib.sha1(flag.encode('utf-8')).hexdigest() if flag==key[0]: payload = {'inputNumber':i,'submit':'%E6%8F%90%E4%BA%A4'} url = "http://ctf5.shiyanbar.com/ppc/sd.php" r1 = s.post(url,data=payload) print(r1.text) break def get_key(s): url = "http://ctf5.shiyanbar.com/ppc/sd.php" r = s.get(url) html = r.text key = re.findall('style="color:red">(.*)</div>',html) return key def main(): s = requests.Session() key = get_key(s) jiemi(0,100000,key,s) if __name__ == '__main__': main()
运行结果:
提交圆满完成任务。。
我不会告诉你,其实评论里面有答案,尾页,这个人过分了昂。。。
知识要大家一起分享,但带上原文链接是对作者的尊重。