0×00 靶场链接
http://123.206.87.240:8002/web16/
0×01 题目描述
0×02 解题过程
一看大数运算就觉得要用python,然后就只能找wp看看
多刷新几次会有提示出来
一个value post
创建步骤
先建立文本文档,后缀改为.py,然后右键使用IDE打开
代码如下:
import re
import requests
s = requests.Session()
r = s.get("http://120.24.86.145:8002/qiumingshan/")#得到页面对象,为了得到后面r.text的内容
searchObj = re.search(r'^<div>(.*)=\?;</div>$', r.text, re.M | re.S)#re.M匹配多行,re.S匹配一行
#print searchObj.group(1) #通过正则表达式的过滤匹配得到整个页面的内容中的运算表达式
#print eval(searchObj.group(1)) #eval可以计算所得到的一串运算
d = {
"value": eval(searchObj.group(1))
}
r = s.post("http://120.24.86.145:8002/qiumingshan/", data=d)
print r.content
首先注意在编辑python脚本之前需要使用pip install requests安装这个requests包
在session()库里我们用到了session(),get(),post()三个函数
s=requests.session()这个对象能跨请求的保留某些参数,比如cookie,cookie就是保留当前会话信息的一个对象
r=s.get(url)产生一个请求资源的对象,能更方便地获取url里的资源
我们还用到了自带的库re
这个库一般是用于字符串的匹配,因此可以用这个脚本计算算式
searchObj = re.search(r'^<div>(.*)=\?;</div>$', r.text, re.M | re.S)
re.search(pattern, string, flags=0)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
pattern : 正则表达式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正则表达式使用时的控制标记
e.M | re.S是为了过滤=?这两个字符,只把数字保留到对象中
eval(searchObj.group(1))这个函数eval()的官方解释是:将字符串str当成有效的表达式来求值并返回计算结果,大致就是这样
r = s.post("http://120.24.86.145:8002/qiumingshan/", data=d)是构造post的data部分