目录
基本介绍
在进行ping命令执行时,能够通过截断来执行新的命令。
根据此原理来进行注入。
例子如下 ip=127.0.0.1;ls
空格过滤
考虑在进行命令注入时,过滤了空格,可以采用${IFS}、$IFS、$IFS$9
的局部变量来表示分隔符,但考虑$IFS直接接字母时可能会被解析成其他变量,所以采用${IFS}
固定变量,或者$IFS$9
采用$9这个空字符来与后面字母分隔开来固定变量
只过滤cat,flag等关键字
如未过滤" ’ \等连接转义符
可以使用""连接符,\转义符来间隔字符串以此绕过过滤
过滤; | &等连接符
linux下;可以用%0a替代
例ctfhub-rce-综合练习过滤了如下字符
preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/"
所以最后的payload为
1%0acd$IFS$1f""lag_is_here%0aca""t$IFS$1f""lag_7548135816224.php
过滤more/tail/less/cat等大部分查看符
使用strings
$a == md5( $a) 绕过
原理是寻找一个0e开头的字符串其md5值也是0e,
如0e215962017
使用 inode节点查看文件
ls -i 可以查看文件的inode号
然后可以使用命令find -inum 1321734 | xargs cat来查看文件了。
xargs将前面的输出作为管道后面的输入。
数组强比较绕过
php5.5版本的数组key溢出bug
参考链接
[0 => 0] === [0x100000000 => 0]为true