WriteUp题目信息解题思路打开页面多刷新几次页面可以看到提示用post方式提交答案这里直接使用python语言实现import requests # 引入网络请求库 import re # 引入正则分析库 session requests.Session() # 创建一个会话对象用于保存携带 cookies用于发起多次请求而不丢失 cookies可以让后台从 cookies 取出它的判断标识字符串从而判断我们第二次 post 提交过去的数据和他生成的计算结果是否一致 response session.get(http://171.80.2.169:11701/) # 发起一次 get 请求获取首页内容 response.encoding utf-8 # 设置响应编码为 utf-8用于正确解析中文 pattern div(.*?)\?;/div # 定义一个正则表达式用于匹配隐藏的 div 元素 \? 代表匹配 ? 这个字符这里需要懂一点点正则表达式提取 div 之间的内容.*? 代表匹配任意字符多次并提取这部分到?; 这个位置 matches re.findall(pattern, response.text, re.DOTALL) # 用正则表达式匹配首页内容re.DOTALL 代表匹配任意字符包括换行符 num eval(matches[0]) # 每个步骤可以 print 变量打印运行下看值再写下一步发现 matches 是数组第 0 个元素就是网页那一串计算的表达式eval() 是执行表达式计算拿到结果给 num 变量 print(num) # 打印下确认看看 # 发起一次 post 请求并传递 value 参数并打印返回结果 data 是固定名字的后面跟上题目让传递的参数名和你计算好的结果值 response2 session.post(http://171.80.2.169:11701/, data{ value: num }) response2.encoding utf-8 print(response2.text) # 打印 post 提交计算后返回的内容得到使用工具PycharmWriteUp2题目信息解题思路打开页面F12查看源代码提示要以post方式提交一个参数margin接下来就要找margin的值为多少点击网络发送请求发现flag用随波逐流解码发现base64解码但这不是真正的flag需要再进行一次解码得到值为668253应该就是margin的值了但是用hackbar发送post请求后没有得到flag所以必须在同一会话内、极短时间内发送 POST 请求提交margin参数最终 flag 会在 POST 响应体中返回所以只能用python脚本了import requests import base64 # 题目目标地址 url http://171.80.2.169:17063 # 用同一个会话保持Cookie/上下文一致避免跨请求失效 session requests.Session() try: # 1. 发送GET请求获取响应头中的编码线索 get_response session.get(url, timeout5) get_response.raise_for_status() # 提取响应头中的base64编码字符串根据响应头字段名为flag encode_str get_response.headers.get(flag) if not encode_str: print(错误未在响应头中找到编码字符串请检查抓包确认字段名) exit() # 2. 第一次base64解码获取明文提示和第二段编码 first_decode base64.b64decode(encode_str).decode(utf-8) print(f第一次解码结果{first_decode}) # 提取冒号后的第二段base64字符串二次解码得到margin值 second_encode first_decode.split(:)[-1].strip() margin_value base64.b64decode(second_encode).decode(utf-8) print(f提取到的margin值{margin_value}) # 3. 立即发送POST请求提交margin参数 post_data {margin: margin_value} post_response session.post(url, datapost_data, timeout5) post_response.raise_for_status() # 4. 输出最终结果获取flag print(\nPOST请求响应结果含最终flag) print(post_response.text.strip()) except Exception as e: print(f执行出错{str(e)})使用工具PycharmFlagflag{4824b6411916e9503bda18650d3b2d31}总结通过本题学到base64 二次解码