XLCTF-湘岚杯-WEB题解
字数 1556 2025-08-22 12:23:12
XLCTF-湘岚杯-WEB题解教学文档
1. 第一关:命令执行绕过
题目分析
下发容器后得到代码,主要考察点:
- 需要找到一个经过sha256加密后前6位字符为"647d99"的字符串
- 命令执行绕过,system函数将输出重定向到/dev/null
解题步骤
-
SHA256碰撞:
- 编写脚本爆破满足sha256($str)[0:6] == "647d99"的字符串
- 找到的满足条件的字符串:
3084863
-
命令执行绕过:
- 题目使用
system($cmd . " > /dev/null 2>&1");执行命令 - 由于没有过滤反斜杠,可以使用反斜杠绕过
- 构造payload:
3084863;\命令 - 这样拼接后变为:
3084863;\命令 > /dev/null 2>&1 - 反斜杠会转义空格,使后面的重定向失效,前面的命令正常执行
- 题目使用
关键点
- SHA256部分碰撞
- 反斜杠转义绕过命令重定向
2. 第二关:弱类型比较与MD5碰撞
题目分析
- 第一个if要求弱类型比较,找到转换后以"0e"开头的字符串
- 第二个if要求找到md5(xxxx7894xxx)中未知的数字,使最终hash值为
19cb79e80ab6d5400950c392d077cc1c
解题步骤
-
弱类型比较:
- 寻找两个不同字符串,其MD5值都以"0e"开头
- 例如:
QNKCDZO和240610708
-
MD5碰撞:
- 爆破格式为
xxxx7894xxx的字符串,使其MD5值为指定值 - 最终找到符合条件的字符串
- 爆破格式为
关键点
- PHP弱类型比较特性
- MD5部分碰撞技术
3. 第三关:parse_str变量覆盖
题目分析
- 使用
parse_str($_SERVER['QUERY_STRING']);处理查询参数 - 该函数会将URL参数直接转换为变量
解题步骤
- 直接传入需要的变量名和值
- 例如访问:
/?a=1会创建变量$a=1
关键点
- parse_str函数的变量覆盖漏洞
4. 第四关:反斜杠绕过命令执行
题目分析
- 经典代码分析题
- 命令执行函数未过滤反斜杠
解题步骤
- 使用反斜杠绕过过滤
- 构造payload:
\命令
关键点
- 反斜杠转义在命令执行中的应用
5. 第五关:身份伪造与SUID提权
题目分析
- 登录界面存在user参数伪造漏洞
- 成功伪造admin后可访问新功能点
- 新功能点存在RCE漏洞,可反弹shell
- 需要提权读取/root下的flag
解题步骤
-
身份伪造:
- 注册普通用户并登录
- 抓包修改user参数为admin
- 成功伪造admin身份
-
RCE与反弹shell:
- 发现新功能点存在RCE
- 由于函数被过滤,使用反弹shell方式
- 在自己的VPS监听1443端口
- 构造反弹shell命令
-
SUID提权:
- 查找具有SUID权限的命令:
find / -perm -4000 2>/dev/null - 发现cp命令具有SUID权限
- 利用cp进行提权:
cp /etc/passwd /tmp/passwd.bak echo 'root::0:0::/root:/bin/bash' >> /tmp/passwd.bak cp /tmp/passwd.bak /etc/passwd su - 成功提权后读取flag
- 查找具有SUID权限的命令:
关键点
- Cookie或参数伪造admin身份
- 受限环境下的反弹shell技术
- SUID提权技术(特别是cp命令提权)
6. 第六关:时间盲注
题目分析
- 典型的时间盲注漏洞
- 可以使用sqlmap自动化工具
解题步骤
- 使用sqlmap进行自动化注入:
sqlmap -u "目标URL" --technique=T --time-sec=5 --level=5 --risk=3 - 成功跑出数据库信息
关键点
- 时间盲注原理
- sqlmap工具的高级使用
总结
本系列题目涵盖了WEB安全的多个重要知识点:
- 命令执行绕过技术
- 哈希碰撞与弱类型比较
- 变量覆盖漏洞
- 身份伪造与垂直越权
- 受限环境下的RCE技术
- Linux提权技术
- SQL注入(特别是时间盲注)
每个关卡都设计精巧,考察了选手对漏洞原理的深入理解和实际利用能力。解题过程中需要灵活运用各种绕过技术,并结合自动化工具提高效率。