西湖论剑wp
字数 2356 2025-08-22 12:23:12
西湖论剑CTF Writeup 技术解析与教学文档
一、Web题目解析
1. Rank-l (SSTI注入)
题目特征:
- Python编写的Web应用
- 输入框存在模板注入漏洞
- 密码输入无回显但其他字符会报错
漏洞确认:
- 确定为SSTI(服务器端模板注入)漏洞
绕过技巧:
- 发现过滤了斜杠
/字符 - 使用构造器绕过过滤
Payload构造:
{{(lipsum|attr(' globals ')|attr(' getitem ')('os')|attr('popen')('ls..'))|attr('read')()}}
最终利用:
- 已知flag文件名,直接构造读取flag的payload
2. sqli or not (SQL注入)
源码分析:
- 第一关过滤了某些字符
- 可以使用编码绕过(如%2c代替逗号)
绕过技巧:
- 单引号被过滤
- 使用JSON格式绕过:
{"username":"$or+1=1%23"%2C"password":"1111"}`
关键点:
- 利用
$符号和反引号构造SQL语句 - %23是#的URL编码,用于注释后续语句
二、Pwn题目解析
1. Vpwn
基本信息:
- 存在结构体定义
- push操作存在逻辑漏洞,size字段可被修改
漏洞利用:
- 发现可以泄漏libc的函数
- 使用脚本调用该命令泄漏栈上数据
- 发现第18和19个数据是libc地址
内存分析:
StackVector initial_struct; // [rsp+30h] [rbp-40h] BYREF
- 未限制写入栈中数据的个数,存在溢出漏洞
ROP链构造:
- 在libc中寻找gadgets
- 需要:
/bin/sh字符串、pop rdi ret、system地址 - 构造完整ROP链获取shell
2. Heaven's door
沙箱分析:
- 过滤了很多系统调用指令
- 但遗漏了
SYS_openat和SYS_sendfile
解题思路:
- 典型的ORW(Open-Read-Write)执行
- 绕过沙箱限制读取flag
利用脚本:
- 编写Python脚本实现ORW操作
三、Crypto题目解析
matrixRSA
题目特点:
- 泄漏了p的高100位
- 使用Coppersmith方法恢复完整的p
解题步骤:
- 利用泄漏的p高位信息
- 使用Coppersmith算法恢复完整p
- 计算q = n/p
- 处理模的矩阵群(三阶为p(p+1)(p-1)(p²+p+1))
四、Misc题目解析
1. 糟糕的磁盘
文件分析:
- 多个.img文件组成RAID 0阵列
- 使用010 Editor分析发现PNG文件
恢复方法:
- 使用R-STUDIO读取
- 发现特定组合可恢复图片:
- uGZ85OzT.img + m8X4exzG.img + Fsiq6lKn.img
- 剩余文件组合得到完整数据
加密分析:
- 发现secret和key,联想到VeraCrypt
- 挂载加密卷获取flag:
DASCTF{R41D_4ND_D15K_M4573R}
2. IOT - blink
固件分析:
- 检测固件信息
- 手动查看特定路径
- 发现附近字符串包含模式电码
flag发现:
- 电码和字符串:
rtosandmorseisveryeasyhahhaha - 直接作为flag提交
3. sharkp
流量分析:
- 导出HTTP对象
- 分析三个主要接口:
- setConfigUpload(上传日志文件)
- setSystemAdmin(存在RCE漏洞)
漏洞利用:
setSystemAdmin接口中AdminID使用反引号执行命令- RCE接口确定为
setSystemAdmin
附加发现:
- TCP流190中包含ELF文件
- 导出原始数据分析为shellcode
- 安恒云沙箱分析找到回连地址:
Flag{setSystemAdmin_115.195.88.161}
五、DS题目解析
1. easydatalog
日志分析:
- access.log中发现
/upload/1.php(疑似Webshell) - error.log中发现webshell密码为"1"
数据提取:
- 过滤出所有相关数据
- 发现eval和base64_decode操作
- 提取出JPG和ZIP文件
盲水印提取:
java -jar BlindWatermark.jar decode -f Untitled1.jpg 1.jpg
- 获得密码:
dataPersonPass123987 - 和身份证号:
30601319731003117X_79159498824
2. DSASignatureData
处理流程:
- 从流量中提取userid、name、idcard、phone
- 已知签名算法为DSA,哈希算法为SHA256
- 加密数据并与data-sign.csv比较
- 识别并保存被篡改的个人信息到新CSV文件
- 按userid排序并去重
3. easyrawencode
文件分析:
- RSA目录包含:
- encrypted_data.zip
- hack.py
- private.pem
关键发现:
- 读取环境变量
hackkey作为AES密钥 - 内存分析获取CSV文件
- RC4解密签名,使用密码列解密
- 最终flag:
DASCTF{fc450e2a9062a39049d501cb5ce287d0}
六、技术要点总结
-
SSTI绕过:
- 属性链构造
- 过滤字符绕过技巧
- 全局变量访问方法
-
SQL注入新技巧:
- JSON格式注入
- 特殊字符编码绕过
- 注释符替代方案
-
Pwn高级技巧:
- Libc地址泄漏方法
- 栈溢出漏洞利用
- ROP链构造原则
- 沙箱绕过技术
-
密码学应用:
- Coppersmith算法实践
- 矩阵RSA的特殊性
- 部分密钥泄漏攻击
-
取证分析技术:
- RAID恢复方法
- 内存取证流程
- 网络流量深度分析
- 盲水印提取技术
-
IOT安全:
- 固件分析基础
- 字符串提取技巧
- 模式识别方法
本教学文档涵盖了西湖论剑CTF中的关键技术点,可作为相关安全领域的学习参考。每个题目都展示了不同的安全漏洞和利用技术,建议读者结合实际环境进行练习,以深入理解各项技术原理和应用场景。