php命令执行总结

admin 2023年12月31日11:01:56评论33 views字数 2240阅读7分28秒阅读模式

#############################

免责声明:本文仅作收藏学习之用,亦希望大家以遵守《网络安全法》相关法律为前提学习,切勿用于非法犯罪活动,对于恶意使用造成的损失,和本人及作者无关。

##############################

php命令执行总结

linux基础

常用命令

1
2
3
4
5
6
7
8
9
10
11
pwd:返回当前的工作目录

ls :即英文单词list的缩写,列出指定目录的所有文件名或者文件夹名(默认为当前工作目录下)
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表的方式显示文件的详细信息

clear:清屏,clear作用为清除终端上的显示
cd:切换工作目录
mkdir:创建目录
touch:创建文件
rm:删除文件,加上 -r 删除一切,为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件

php命令执行总结

1
cp:拷贝文件或者目录(注:cp 只能拷贝空文件夹或者文件,若想递归拷贝则使用 -r 选项)

php命令执行总结

1
2
3
4
5
6
7
mv:剪切或者重命名,用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名
-f 禁止交互式操作,如有覆盖也不会给出提示
-i 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v 显示移动进度

移动文件 mv xxx.txt 目录
重命名 mv xxx.txt new.txt

PHP相关函数

代码执行类

eval:将字符串内容作为php代码执行

php命令执行总结

assert:检查一个断言是否为 FALSE,用法与eval类似

php命令执行总结

create_function:创建一个匿名函数,第一个参数为参数名,第二个参数为函数内容(不过在php7.2后被废弃了)

比如

1
2
3
4
5
create_function('$a','echo "123";')  
相当于
function a($a) {
echo123”;
}

php命令执行总结

1
2
3
4
5
create_function('$a','echo "123";}echo "666";//') 
相当于
function a($a) {
echo123”;}echo "666";//
}

php命令执行总结

preg_replace:执行一个正则表达式的搜索和替换

语法:

1
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

如果在构造正则表达式的时候,使用了 /e 修饰符,preg_replace会将replacement 参数当作PHP代码执行

不过在php5.5后/e 修饰符已经被弃用了,在php7.0后不再支持 /e修饰符

php命令执行总结

call_user_func:把第一个参数作为回调函数调用,其余参数是回调函数的参数

1
call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

php命令执行总结

call_user_func_array:把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入

1
call_user_func_array ( callable $callback , array $param_arr )

php命令执行总结

命令执行类

exec:执行一个外部程序,但不会输出全部结果,而是返回结果的最后一行

语法:

1
exec ( string $command [, array &$output [, int &$return_var ]] ) : string

php命令执行总结

passthru:执行外部程序并且显示原始输出,类似exec,但其不返回结果,不用使用echo查看结果

php命令执行总结

system:执行外部程序,并且显示输出,与passthru基本相同,但system返回结果

php命令执行总结

shell_exec:通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回(类似于反引号)

xxx反引号包括的内容会被当成系统命令

php命令执行总结

popen: 打开进程文件指针

语法:

1
popen ( string $command , string $mode )

php命令执行总结

proc_open:执行一个命令,并且打开用来输入/输出的文件指针

0 表示标准输入,1 表示标准输出,2 表示标准错误

php命令执行总结

命令执行漏洞绕过

命令操作符

管道操作符 cmd1|cmd2,将cmd1的结果输出给cmd2

&和号操作符 cmd1&cmd2,让命令在后台执行

php命令执行总结

;分号操作符 cmd1;cmd2,执行多条命令

php命令执行总结

&&与操作符 cmd1&&cmd2,只有cmd1执行成功后cmd2才会执行

php命令执行总结

||或操作符 cmd1||cmd2,只有cmd1执行失败cmd2才会执行

php命令执行总结

空格绕过

字符串连接

IFS(内部域分隔),是shell的内置变量,是一个用于分割字段的字符列表,默认值是空白(包括空格、tab、换行)

php命令执行总结

使用{}

php命令执行总结

使用tab

1
?cmd=cat%09/etc/passwd

在读取文件时使用重定向符<>

php命令执行总结

黑名单关键字绕过

字符串拼接

1
a=c;b=at;c=she;d=ll.php;$a$b ${c}${d}

php命令执行总结

利用环境变量

1
${SHELLOPTS:3:1}at${IFS}shell.php

php命令执行总结

使用空变量

1
cat sh${x}ell.php

php命令执行总结

利用linux通配符?*

php命令执行总结

使用反斜杠

在bash中被解释为转义字符,用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值,除了换行符

php命令执行总结

使用base64编码

php命令执行总结

php命令执行总结

命令执行漏洞防御

(1)对参数进行严格的过滤

(2)设置命令执行函数参数白名单,结合正则表达式来进行白名单限制


原文始发于微信公众号(菜鸟小新):php命令执行总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月31日11:01:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   php命令执行总结https://cn-sec.com/archives/2352630.html

发表评论

匿名网友 填写信息