西湖论剑wp
字数 2356 2025-08-22 12:23:12

西湖论剑CTF Writeup 技术解析与教学文档

一、Web题目解析

1. Rank-l (SSTI注入)

题目特征

  • Python编写的Web应用
  • 输入框存在模板注入漏洞
  • 密码输入无回显但其他字符会报错

漏洞确认

  • 确定为SSTI(服务器端模板注入)漏洞

绕过技巧

  1. 发现过滤了斜杠/字符
  2. 使用构造器绕过过滤

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字段可被修改

漏洞利用

  1. 发现可以泄漏libc的函数
  2. 使用脚本调用该命令泄漏栈上数据
  3. 发现第18和19个数据是libc地址

内存分析

StackVector initial_struct; // [rsp+30h] [rbp-40h] BYREF
  • 未限制写入栈中数据的个数,存在溢出漏洞

ROP链构造

  1. 在libc中寻找gadgets
  2. 需要:/bin/sh字符串、pop rdi retsystem地址
  3. 构造完整ROP链获取shell

2. Heaven's door

沙箱分析

  • 过滤了很多系统调用指令
  • 但遗漏了SYS_openatSYS_sendfile

解题思路

  • 典型的ORW(Open-Read-Write)执行
  • 绕过沙箱限制读取flag

利用脚本

  • 编写Python脚本实现ORW操作

三、Crypto题目解析

matrixRSA

题目特点

  • 泄漏了p的高100位
  • 使用Coppersmith方法恢复完整的p

解题步骤

  1. 利用泄漏的p高位信息
  2. 使用Coppersmith算法恢复完整p
  3. 计算q = n/p
  4. 处理模的矩阵群(三阶为p(p+1)(p-1)(p²+p+1))

四、Misc题目解析

1. 糟糕的磁盘

文件分析

  • 多个.img文件组成RAID 0阵列
  • 使用010 Editor分析发现PNG文件

恢复方法

  1. 使用R-STUDIO读取
  2. 发现特定组合可恢复图片:
    • uGZ85OzT.img + m8X4exzG.img + Fsiq6lKn.img
  3. 剩余文件组合得到完整数据

加密分析

  • 发现secret和key,联想到VeraCrypt
  • 挂载加密卷获取flag:DASCTF{R41D_4ND_D15K_M4573R}

2. IOT - blink

固件分析

  1. 检测固件信息
  2. 手动查看特定路径
  3. 发现附近字符串包含模式电码

flag发现

  • 电码和字符串:rtosandmorseisveryeasyhahhaha
  • 直接作为flag提交

3. sharkp

流量分析

  1. 导出HTTP对象
  2. 分析三个主要接口:
    • setConfigUpload(上传日志文件)
    • setSystemAdmin(存在RCE漏洞)

漏洞利用

  • setSystemAdmin接口中AdminID使用反引号执行命令
  • RCE接口确定为setSystemAdmin

附加发现

  • TCP流190中包含ELF文件
  • 导出原始数据分析为shellcode
  • 安恒云沙箱分析找到回连地址:Flag{setSystemAdmin_115.195.88.161}

五、DS题目解析

1. easydatalog

日志分析

  1. access.log中发现/upload/1.php(疑似Webshell)
  2. error.log中发现webshell密码为"1"

数据提取

  1. 过滤出所有相关数据
  2. 发现eval和base64_decode操作
  3. 提取出JPG和ZIP文件

盲水印提取

java -jar BlindWatermark.jar decode -f Untitled1.jpg 1.jpg
  • 获得密码:dataPersonPass123987
  • 和身份证号:30601319731003117X_79159498824

2. DSASignatureData

处理流程

  1. 从流量中提取userid、name、idcard、phone
  2. 已知签名算法为DSA,哈希算法为SHA256
  3. 加密数据并与data-sign.csv比较
  4. 识别并保存被篡改的个人信息到新CSV文件
  5. 按userid排序并去重

3. easyrawencode

文件分析

  • RSA目录包含:
    • encrypted_data.zip
    • hack.py
    • private.pem

关键发现

  • 读取环境变量hackkey作为AES密钥
  • 内存分析获取CSV文件
  • RC4解密签名,使用密码列解密
  • 最终flag:DASCTF{fc450e2a9062a39049d501cb5ce287d0}

六、技术要点总结

  1. SSTI绕过

    • 属性链构造
    • 过滤字符绕过技巧
    • 全局变量访问方法
  2. SQL注入新技巧

    • JSON格式注入
    • 特殊字符编码绕过
    • 注释符替代方案
  3. Pwn高级技巧

    • Libc地址泄漏方法
    • 栈溢出漏洞利用
    • ROP链构造原则
    • 沙箱绕过技术
  4. 密码学应用

    • Coppersmith算法实践
    • 矩阵RSA的特殊性
    • 部分密钥泄漏攻击
  5. 取证分析技术

    • RAID恢复方法
    • 内存取证流程
    • 网络流量深度分析
    • 盲水印提取技术
  6. IOT安全

    • 固件分析基础
    • 字符串提取技巧
    • 模式识别方法

本教学文档涵盖了西湖论剑CTF中的关键技术点,可作为相关安全领域的学习参考。每个题目都展示了不同的安全漏洞和利用技术,建议读者结合实际环境进行练习,以深入理解各项技术原理和应用场景。

西湖论剑CTF Writeup 技术解析与教学文档 一、Web题目解析 1. Rank-l (SSTI注入) 题目特征 : Python编写的Web应用 输入框存在模板注入漏洞 密码输入无回显但其他字符会报错 漏洞确认 : 确定为SSTI(服务器端模板注入)漏洞 绕过技巧 : 发现过滤了斜杠 / 字符 使用构造器绕过过滤 Payload构造 : 最终利用 : 已知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地址 内存分析 : 未限制写入栈中数据的个数,存在溢出漏洞 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文件 盲水印提取 : 获得密码: 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中的关键技术点,可作为相关安全领域的学习参考。每个题目都展示了不同的安全漏洞和利用技术,建议读者结合实际环境进行练习,以深入理解各项技术原理和应用场景。