bugku-秋名山老司机

秋名山老司机:


打开链接,让我们在2秒之内计算出一个很复杂的式子的值传进去
bugku-秋名山老司机_第1张图片

刷新式子一直在变化,不过出来一个提示让我们以post方式传入计算的值,变量名字为value,如果你真的拿计算机去计算传值,嘿嘿嘿!

在这里插入图片描述

查看源代码没有什么提示

bugku-秋名山老司机_第2张图片

百度知道这道题是快速反弹post请求,什么意思呢?HTTP 响应头获取了一段有效期很短的 key 值后,需要将经过处理后的 key 值快速 POST 给服务器,若 key 值还在有效期内,则服务器返回最终的 flag,否则继续提示“请再加快速度!!!”之类的话,所以你别想手动传值了,必须使用python脚本了,python中有eval函数可以快速计算,满足要求
脚本如下:

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)

解释:

调用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

bugku-秋名山老司机_第3张图片

需要多次运行才可以获取flag,可能在计算过程或者传值过程有错误。

参考链接:

链接一

链接二

你可能感兴趣的:(bugku)