PHP危险函数

部分内容转载

https://www.jianshu.com/p/277294c1a9f8

https://www.cnblogs.com/yewooo00/p/7551083.html

https://www.cnblogs.com/wfzWebSecuity/p/11202512.html

 

信息泄露

1、phpinfo函数

输出 PHP 当前状态的大量信息,包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息

 

2、scandir函数

列出指定路径中的文件和目录

php
var_dump(scandir('./'))
?>

 

执行代码函数

1、eval函数

eval ( string $code ) : mixed

eval() 函数把字符串按照 PHP 代码来执行

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

eval('phpinfo();');
在页面输出hello

 

2、assert函数

assert ( mixed $assertion [, Throwable $exception ] ) : bool

assert — 检查一个断言是否为 FALSE

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行

assert('phpinfo()');

 

3、preg_replace函数

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

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
当$pattern为/e,会把replacement参数当成PHP代码执行
preg_replace("/test/e","phpinfo();","test");

 

4、create_function函数

创造一个匿名函数

php
$newfunc = create_function('$a,$b', 'return "$a  + $b= " . ($a+$b);');
echo $newfunc(1,2) . "\n";
?>

等价于

function lambda($a,$b){ 
return "$a+$b = ".($a+$b); } 
echo lambda(1,2); 
?>

利用

php
$cfunc = create_function('$v', 'return system($v);');
echo $cfunc('whoami');
?>

 

5、call_user_func函数

第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数

php
    $callback= 'assert';
    $parameter = 'phpinfo()';
    call_user_func($callback, $parameter);
?>

 

6、call_user_func_array()函数

使用参数数组中的参数调用第一个参数给定的回调。

php
call_user_func_array('assert', array('phpinfo()'));
?>

 

7、array_map() 函数

将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

php
    $array = array(0,1,2,3,4,5);
    array_map($_GET[1],$array);
?>
http://localhost/test.php?1=phpinfo

 

命令执行函数

1、exec函数

执行一个外部程序

php
echo exec('whoami');
?>

 

2、shell_exec函数

通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回(安全模式不能使用)

php
echo shell_exec('ls');
?>

 

3、passthru函数

passthru ( string $command [, int &$return_var ] ) : void

passthru — 执行外部程序并且显示原始输出

php
echo passthru('ls');
?>

 

4、escapeshellcmd函数

escapeshellcmd ( string $command ) : string

escapeshellcmd — shell 元字符转义

 

5、system()函数

system ( string $command [, int &$return_var ] ) : string

执行外部程序,并且显示输出

php
echo system('whoami')
?>

 

4、proc_open函数

proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd = NULL [, array $env = NULL [, array $other_options = NULL ]]] ) : resource

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

 

 

5、popen()函数

popen ( string $command , string $mode ) : resource

打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

 

 

文件操作函数

copy----------------------拷贝文件
file_get_contents---------将整个文件读入一个字符串
file_put_contents---------将一个字符串写入文件
file----------------------把整个文件读入一个数组中
fopen---------------------打开文件或者url
move_uploaded_file--------将上传的文件移动到新位置
readfile------------------输出文件
rename--------------------重命名一个文件或目录
rmdir---------------------删除目录
unlink & delete-----------删除文件

 

其他函数

1、chgrp()

函数改变文件所属的组

2、chown()
函数改变指定文件的所有者

3、ini_set()

可用于修改、设置 PHP 环境配置参数
4、ini_alter()
是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同

5、ini_restore()
可用于恢复 PHP 环境配置参数到其初始值

 

 

 

你可能感兴趣的:(PHP危险函数)