宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取
题目:Bugku 秋名山老司机
解答:
刷新提示让我们以post方式传入计算的值。
此题是快速反弹Post请求类题目,因为所给时间很短而且计算比较复杂,所以只能写脚本。
python中有eval函数可以快速计算,满足要求。
这道题的脚本如下:
#经常出现执行了但是不弹flag的情况,多试几次就行了import requests
import re #导入请求模块 和 正则模块
url="http://123.206.87.240:8002/qiumingshan/"
r=requests.session() #此题必须要创建会话对象Session(),否则提交结果的时候,重新生成了一个新的表达式,结果会错误
text=r.get(url).text #将get到的数据以文本形式显示出来
cont=re.findall('<div>(.*?)</div>',text) # re模块的findall函数返回的是 正则表达式在字符串中所有匹配结果的 列表 ,利用正则将我们需要的表达式提取出来cont="".join(cont) #列表转字符串,因为eval()接收的参数类型为string, bytes or code object
cont=cont[:-3] #删掉多余的字符
post=eval(cont) #eval()可以把字符串当做有效表达式进行计算
data={'value':post} #构造post数据
ans=r.post(url,data=data)
print(ans.text) #以post方式发送我们获取到的value的值,再将响应的内容打印出来
如果代码后面的注释也看不懂的话,建议先看看这篇文章:详解 CTF Web 中的快速反弹 POST 请求
参考链接:https://blog.csdn.net/zyl_wjl_1413/article/details/83958862
在VScode执行该脚本响应如下图所示:
如果第一次写python爬虫类题目,有些操作不太懂的可以参考该教程:如何用VScode( Visual Studio Code)编写、运行python代码
得到Flag:Bugku{YOU_DID_IT_BY_SECOND}