XLCTF-湘岚杯-WEB题解
字数 1556 2025-08-22 12:23:12

XLCTF-湘岚杯-WEB题解教学文档

1. 第一关:命令执行绕过

题目分析

下发容器后得到代码,主要考察点:

  1. 需要找到一个经过sha256加密后前6位字符为"647d99"的字符串
  2. 命令执行绕过,system函数将输出重定向到/dev/null

解题步骤

  1. SHA256碰撞

    • 编写脚本爆破满足sha256($str)[0:6] == "647d99"的字符串
    • 找到的满足条件的字符串:3084863
  2. 命令执行绕过

    • 题目使用system($cmd . " > /dev/null 2>&1");执行命令
    • 由于没有过滤反斜杠,可以使用反斜杠绕过
    • 构造payload:3084863;\命令
    • 这样拼接后变为:3084863;\命令 > /dev/null 2>&1
    • 反斜杠会转义空格,使后面的重定向失效,前面的命令正常执行

关键点

  • SHA256部分碰撞
  • 反斜杠转义绕过命令重定向

2. 第二关:弱类型比较与MD5碰撞

题目分析

  • 第一个if要求弱类型比较,找到转换后以"0e"开头的字符串
  • 第二个if要求找到md5(xxxx7894xxx)中未知的数字,使最终hash值为19cb79e80ab6d5400950c392d077cc1c

解题步骤

  1. 弱类型比较

    • 寻找两个不同字符串,其MD5值都以"0e"开头
    • 例如:QNKCDZO240610708
  2. MD5碰撞

    • 爆破格式为xxxx7894xxx的字符串,使其MD5值为指定值
    • 最终找到符合条件的字符串

关键点

  • PHP弱类型比较特性
  • MD5部分碰撞技术

3. 第三关:parse_str变量覆盖

题目分析

  • 使用parse_str($_SERVER['QUERY_STRING']);处理查询参数
  • 该函数会将URL参数直接转换为变量

解题步骤

  • 直接传入需要的变量名和值
  • 例如访问:/?a=1会创建变量$a=1

关键点

  • parse_str函数的变量覆盖漏洞

4. 第四关:反斜杠绕过命令执行

题目分析

  • 经典代码分析题
  • 命令执行函数未过滤反斜杠

解题步骤

  • 使用反斜杠绕过过滤
  • 构造payload:\命令

关键点

  • 反斜杠转义在命令执行中的应用

5. 第五关:身份伪造与SUID提权

题目分析

  1. 登录界面存在user参数伪造漏洞
  2. 成功伪造admin后可访问新功能点
  3. 新功能点存在RCE漏洞,可反弹shell
  4. 需要提权读取/root下的flag

解题步骤

  1. 身份伪造

    • 注册普通用户并登录
    • 抓包修改user参数为admin
    • 成功伪造admin身份
  2. RCE与反弹shell

    • 发现新功能点存在RCE
    • 由于函数被过滤,使用反弹shell方式
    • 在自己的VPS监听1443端口
    • 构造反弹shell命令
  3. 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

关键点

  • Cookie或参数伪造admin身份
  • 受限环境下的反弹shell技术
  • SUID提权技术(特别是cp命令提权)

6. 第六关:时间盲注

题目分析

  • 典型的时间盲注漏洞
  • 可以使用sqlmap自动化工具

解题步骤

  • 使用sqlmap进行自动化注入:
    sqlmap -u "目标URL" --technique=T --time-sec=5 --level=5 --risk=3
    
  • 成功跑出数据库信息

关键点

  • 时间盲注原理
  • sqlmap工具的高级使用

总结

本系列题目涵盖了WEB安全的多个重要知识点:

  1. 命令执行绕过技术
  2. 哈希碰撞与弱类型比较
  3. 变量覆盖漏洞
  4. 身份伪造与垂直越权
  5. 受限环境下的RCE技术
  6. Linux提权技术
  7. SQL注入(特别是时间盲注)

每个关卡都设计精巧,考察了选手对漏洞原理的深入理解和实际利用能力。解题过程中需要灵活运用各种绕过技术,并结合自动化工具提高效率。

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进行提权: 成功提权后读取flag 关键点 Cookie或参数伪造admin身份 受限环境下的反弹shell技术 SUID提权技术(特别是cp命令提权) 6. 第六关:时间盲注 题目分析 典型的时间盲注漏洞 可以使用sqlmap自动化工具 解题步骤 使用sqlmap进行自动化注入: 成功跑出数据库信息 关键点 时间盲注原理 sqlmap工具的高级使用 总结 本系列题目涵盖了WEB安全的多个重要知识点: 命令执行绕过技术 哈希碰撞与弱类型比较 变量覆盖漏洞 身份伪造与垂直越权 受限环境下的RCE技术 Linux提权技术 SQL注入(特别是时间盲注) 每个关卡都设计精巧,考察了选手对漏洞原理的深入理解和实际利用能力。解题过程中需要灵活运用各种绕过技术,并结合自动化工具提高效率。