变化的flag在响应头中 -- bugku 22 web6

1. F12查看网页源代码

在这里插入图片描述
根据显示的内容,猜测可能需要使用post提交margin的值,那么接下来就找margin对应的值。注意这里是post margin的值,而不是value的值,等一会儿脚本是{‘margin’:flag}

2.查看响应头

在这里插入图片描述
看到flag在响应头中,所以一会儿要截取文件头r.get(url).headers再切割,base64解码,提交之后发现是错的,后面才知道flag是变化的。

3.还是根据第一步老老实实找margin值,抓包发现phpsession字段,猜测获取页面信息和提交margin值,可能需要使用同一个session

在这里插入图片描述

import requests
import base64

url = 'http://123.206.87.240:8002/web6/'
req = requests.session()
res = req.get(url)

#获取请求头中的flag
flag = res.headers['flag']

#对flag进行base64解码  --- 得到的是bytes类型
txt = base64.b64decode(flag)

#把bytes类型转换成str类型    --- 即对其进行解码 详解请看 https://blog.csdn.net/lanchunhui/article/details/72681978
txt = bytes.decode(txt)

#截取字符串flag后面的字段
txt = txt[txt.index(":")+2:]

#然后再对其进行base64解码
txt = base64.b64decode(txt)

#根据题目提示  now you have to post the margin what you find  --- 需要根据margin属性进行post请求提交
#构造data,另margin属性为爆破出来的txt
data = {'margin': txt}


ans = req.post(url,data)
print ans.content

简化版

import requests
import base64
import sys    

url = 'http://123.206.87.240:8002/web6/'
req = requests.session()
res = req.get(url)

flag = res.headers['flag']
flag = base64.b64decode(flag)

key = flag[flag.find(':')+2:]
key = base64.b64decode(key)
key = {'margin': key}

ans = req.post(url,key)
print ans.content
发布了30 篇原创文章 · 获赞 0 · 访问量 2045

猜你喜欢

转载自blog.csdn.net/s11show_163/article/details/103280991