一、原网页:
二、步骤:
1.查看源码:
需要用post的方式,传输margin值
2.键入F12查看网络:
在响应标头中,flag的内容被Base加密
3.Base解密:
提交Mzl0MTQ3后,发现flag不对
再次Base解密:
提交324147,flag还是不对
根据题目“速度要快”,推测每次刷新页面后,flag的值都会不同
5.反复刷新,查看响应标头:
页面刷新后,flag值不同,推测正确
涉及速度问题,需要编写脚本
6.编写脚本:
(1)脚本:
import requests
import base64
url = "http://117.72.52.127:13539/"
s = requests.session()
headers = s.get(url).headers
mid = base64.b64decode(headers['flag'])
mid = mid.decode()
flag = base64.b64decode(mid.split(':')[1])
data = {'margin': flag}
print(s.post(url, data).text)
(2)脚本运行:
(3)脚本解析:
import requests # 导入 requests 模块,用于发送 HTTP 请求
import base64 # 导入 base64 模块,用于 Base64 编码和解码
url = "http://117.72.52.127:13539/" # 定义目标 URL
s = requests.session() # 创建一个会话对象,方便后续请求中保持会话状态(如 cookies 等)
headers = s.get(url).headers # 发送一个 GET 请求到目标 URL,并获取响应的 headers
# 从响应的 headers 中提取名为 'flag' 的值,并进行 Base64 解码
mid = base64.b64decode(headers['flag']) # 将 Base64 编码的字符串解码为字节
mid = mid.decode() # 将字节解码为字符串
flag = base64.b64decode(mid.split(':')[1])
# 对解码后的字符串进行分割,假设格式为 "key:value",提取 'value' 部分
# 例如,假设 mid 为 "key:base64_encoded_value",则 mid.split(':')[1] 提取 "base64_encoded_value"
# 再次对提取的 'value' 部分进行 Base64 解码
data = {'margin': flag} # 构造 POST 请求的数据,其中 'margin' 字段的值为解码后的 flag
print(s.post(url, data).text) # 发送一个 POST 请求到目标 URL,附带构造的数据,并打印响应的文本内容
三、相关题型: