原理:请求头中的flag在不断刷新,所以要上脚本提交margin的值
在写了上一个python脚本以后,接下来的脚本都能更好的理解了
关于上一个脚本大家可以看看我的这篇博客
进入正题
点进来就是这个图,f12也没什么东西好看的
果断抓包!
你可以点开题目后,再设置代理抓包
或者点进去题目之前设置代理抓包
抓到就是这样:
我们选中这些信息,右键点击Send to Repeater
或者选中 ctrl+R
我们点击那个Go
右边那一栏就会有新的信息
看到flag没有!!!!!!
后面还有个小等号,立马base64伺候
还有一句话OK ,now you have to post the margin what you find
这也是关键,让我们传一个margin的值上去,用post方法
然后我们就可以做一个脚本啦,上代码
import requests
import base64
url='http://123.206.87.240:8002/web6/'
r = requests.session()
headers = r.get(url).headers
mid = base64.b64decode(headers['flag'])
mid = mid.decode()
flag = base64.b64decode(mid.split(':')[1])#获得flag:后的值
data={'margin':flag}
print(r.post(url,data).text)
url=‘http://123.206.87.240:8002/web6/’
r = requests.session()
headers = r.get(url).headers
这三句是为了让我们能跟网站关联起来,可以向网站拿数据和发送数据
headers就是消息头,就是这些
mid = base64.b64decode(headers[‘flag’])
mid = mid.decode()
拿到消息头以后,我们把那个叫flag的消息头拿出来解码
然后我发现解出来是这样的:
b'\xe8\xb7\x91\xe7\x9a\x84\xe8\xbf\x98\xe4\xb8\x8d\xe9\x94\x99\xef\xbc\x8c\xe7\xbb\x99\xe4\xbd\xa0flag\xe5\x90\xa7: MzgxMzQ1'
怎么跟我想的不一样???
所以我再丢回去==decode()==一下,发现
跑的还不错,给你flag吧: MzgxMzQ1
还要解码。。。
不过解完就是我们要提交的值了
flag = base64.b64decode(mid.split(’:’)[1])#获得flag:后的值
data={‘margin’:flag}
print(r.post(url,data).text)
用==split()方法获得“:”号后的字符,然后放到b64decode()==里面解码
再构造要提交的data
用post方法提交
就这样得到key啦!