完了完了,今天是不是做不完了……??
1+1+2
这种字符串的结果;post = {‘value‘: result}
s.post(url, data = post)
;r‘(\d+[+\-*])+(\d+)‘
可以用来匹配123+456*789
这种算式;https://ctf.bugku.com/challenges#秋名山老司机
import requests
import re
url = ‘http://120.24.86.145:8002/qiumingshan/‘
s = requests.Session() # 很关键,因为session保证了长链接,才能保证我们在2s内post出请求,要不然post只会开启一个新链接
source = s.get(url)
expression = re.search(r‘(\d+[+\-*])+(\d+)‘, source.text).group() # re.search()可以找到字符串中匹配的某一段字符,这解决方案完美
result = eval(expression) # eval能直接把字符串转换为可执行的语句,完美
post = {‘value‘: result} # 构造post内容,学到了post的内容是json
print(s.post(url, data = post).text) # 输出post后结果,学到了请求时添加post内容是用`data=?`
Bugku{YOU_DID_IT_BY_SECOND}
,真的是有概率得到,可能是py和php算的数不一样……https://ctf.bugku.com/challenges#速度要快
6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTlRVek5qZzM=
跑的还不错,给你flag吧: NTUzNjg3
,但是填入并不对553687
,这个难不成是margin的值??脚本测试一下#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#fileName : decry.py
#createTime: 2020/09/18 23:34:52
#author : 乔悟空
#purpose : 此脚本用于快速响应目标url并post指定值
import requests
url = "http://123.206.87.240:8002/web6/"
session = requests.session()
res = session.get(url).text
print(res)
for i in range(20):
res = session.post(url,data={‘margin‘:553687}).text
print(res)
6. 看来是思路不对,再去看看,发现端倪,md,我明白了,我发现哪个flag是一直在变的,原来如此,也就是说margin是在变的,也对,怎么可能像之前想的这么简单呐……修改脚本
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#fileName : decry.py
#createTime: 2020/09/18 23:34:52
#author : 乔悟空
#purpose : 此脚本用于快速响应目标url并post指定值
import requests
import base64
url = "http://123.206.87.240:8002/web6/"
session = requests.session() # 保持长链接
res = session.get(url).headers[‘flag‘] # 取响应头中flag的动态变化值
print(res)
res = base64.b64decode(res).decode().split(‘: ‘)[1] # 第一次base64
print(res)
res = base64.b64decode(res).decode() # 第二次base64
print(res)
res = session.post(url,data={‘margin‘:res}).text # 快速post margin
print(res)
KEY{111dd62fcd377076be18a}
原文:https://www.cnblogs.com/qiaowukong/p/13694062.html