部分内容转载

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";
?>

等价于

<?php 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危险函数的更多相关文章

  1. Apache降权和禁用PHP危险函数

    测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...

  2. 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?

    虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...

  3. PHP危险函数总结学习

    1.PHP中代码执行的危险函数 call_user_func() 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数. 传入call_user_func()的参数不能为引用传递 ...

  4. PHP危险函数的持续学习

    记录下遇到过的PHP危险函数 0x01 escapeshellarg()与escapeshellsmd()联合 先给出官方的定义: escapeshellarg ( string $arg ) : s ...

  5. 一些需要禁用的PHP危险函数(disable_functions)

    一些需要禁用的PHP危险函数(disable_functions)   有时候为了安全我们需要禁掉一些PHP危险函数,整理如下需要的朋友可以参考下 phpinfo() 功能描述:输出 PHP 环境信息 ...

  6. 【随笔】Apache降权和禁用PHP危险函数

    测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...

  7. PHP操作用户提交内容时需要注意的危险函数

    对于我们的程序开发来说,用户的输入是解决安全性问题的第一大入口.为什么这么说呢?不管是SQL注入.XSS还是文件上传漏洞,全部都和用户提交的输入参数有关.今天我们不讲这些问题,我们主要探讨下面对用户的 ...

  8. php常见的危险函数

    代码执行的危险函数 eval() 把字符串作为php代码执行 早期php一句话木马都用这个 <?php @eval($_POST['shell']);?> assert() 检查一个断言是 ...

  9. 一些需要被禁用的php危险函数

    phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级 ...

  10. 一些需要禁用的PHP危险函数

    phpinfo()功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec().危险等级:高 e ...

随机推荐

  1. Docker系列-(3) Docker-compose使用与负载均衡

    上一篇文章介绍了docker镜像的制作与发布,本文主要介绍实际docker工程部署中经常用到的docker-compose工具,以及docker的网络配置和负载均衡. Docker-compose介绍 ...

  2. Selenium 4.0 Alpha更新实践

    上期讲到了Selenium 4.0 Alpha更新日志,这次来实践一下更新内容. DevTools操作更加方便. Chrome录制更加方便.(未实践) 窗口管理不在依赖一个driver. 相对定位器功 ...

  3. selenium处理常见自动化场景

    目录 定位一组对象 层级定位 定位frame中的对象 alert/confirm/prompt处理 下拉框处理 调用javascript 多窗口处理 处理验证码 处理cookie 定位一组对象 web ...

  4. tomcat安装与环境变量配置

    1.安装tomcat 2.找到tomcat安装路径的bin文件夹 → 打开 startup.bat 3.打开浏览器输入网址 http://localhost:8080 4.配置CATALINA_BAS ...

  5. 磁盘分区(GPT)

    右击 我的电脑 → 管理 → 磁盘管理 (对磁盘1进行分区)右击 磁盘1 → 初始化 磁盘1 右击 磁盘1白色部分 → 新建磁盘分区 先创建主分区(主分区最多创建4个,扩展分区最多1个) 输入分区大小 ...

  6. JS中的防抖和节流

    JS-防抖和节流 在进行窗口的resize.scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕.此时我们可以采用debounce(防抖)和 ...

  7. python之with语句结合上下文管理器

    所谓上下文管理器即在一个类中重写了__enter__方法和__exit__方法的类就可以成为上下文管理器类. 我们可以通过with语句结合上下文管理器简化一些操作. 使用with语句结合自定义上下文管 ...

  8. 还不知道如何实践微服务的Java程序员,这遍文章千万不要错过!

    作者:古霜卡比 前言 本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节. 要理解微服务 ...

  9. 安装完PyCharm,启动时弹出Failed to load JVM DLLbinserverjvm

    安装完PyCharm,启动时弹出"Failed to load JVM DLL\bin\server\jvm.dll"解决方案 问题描述:打开PyCharm时,弹出"Fa ...

  10. keras模型保存和权重保存

    模型保存和读取(包括权重): model.save('./model.h5') from keras import models model = models.load_model(./model.h ...