xuenixiang_2020_web_web200-1
打开链接,让我们在2秒之内计算出一个很复杂的式子的值传进去刷新式子一直在变化,不过出来一个提示让我们以post方式传入计算的值,变量名字为value,如果你真的拿计算机去计算传值,嘿嘿嘿!
查看源代码没有什么提示
百度知道这道题是快速反弹post请求,什么意思呢?HTTP 响应头获取了一段有效期很短的 key 值后,需要将经过处理后的 key 值快速 POST 给服务器,若 key 值还在有效期内,则服务器返回最终的 flag,否则继续提示“请再加快速度!!!”之类的话,所以你别想手动传值了,必须使用python脚本了,python中有eval函数可以快速计算,满足要求
脚本如下:
<font size="4">import requests
s = requests.Session()
r = s.get("http://123.206.87.240:8002/qiumingshan/")
searchObj = re.search(r'(\d+[+\-*])+(\d+)', r.text)
d = {
"value": eval(searchObj.group(0))
}
r = s.post("http://123.206.87.240:8002/qiumingshan/", data=d)
print(r.text)
</font>需要多次运行才可以获取flag,可能在计算过程或者传值过程有错误。
解释:
调用requests库
创建一个会话对象s,以会话对象向url发出一个get请求
re.search扫描一个字符串返回第一个匹配成功的值,r.text为服务器返回页面的内容,这句代码的功能是在re.text中匹配我们需要的计算公式,r表示字符串为原始字符串,里面的"\"不再被认为转义字符
“\d+” 匹配一个或者多个字符
“[+-*]” 匹配加号,加号,乘号,因为式子里面包含这三种运算,"-“在中括号里面为特殊符号,使用”\"转义
“\d+” 再匹配一个字符或者多个字符
这样就满足了式子格式
创建一个字典d,键"value",键值为刚才匹配的式子的值
eval计算式子的值
"group(0)"表示匹配的结果,索引从0开始,这里指的匹配到的式子
以post的形式传给url一个值,参数data为默认参数不能修改
打印出r.text,里面的内容为成功提交计算结果的返回页面,里面存放着flag
页:
[1]