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函数
$code ) : mixedeval() 函数把字符串按照 PHP 代码来执行
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
eval('phpinfo();');
在页面输出hello
2、assert函数
$assertion [, Throwable $exception ] ) : boolassert — 检查一个断言是否为 FALSE
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行
assert('phpinfo()');
3、preg_replace函数
preg_replace — 执行一个正则表达式的搜索和替换
$pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixedpreg_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函数
$command [, int &$return_var ] ) : voidpassthru — 执行外部程序并且显示原始输出
<?php
echo passthru('ls');
?>
4、escapeshellcmd函数
$command ) : stringescapeshellcmd — shell 元字符转义
5、system()函数
$command [, int &$return_var ] ) : string执行外部程序,并且显示输出
<?php
echo system('whoami')
?>
4、proc_open函数
$cmd , array $descriptorspec , array &$pipes [, string $cwd = NULL [, array $env = NULL [, array $other_options = NULL ]]] ) : resourceproc_open — 执行一个命令,并且打开用来输入/输出的文件指针。
5、popen()函数
$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危险函数的更多相关文章
- Apache降权和禁用PHP危险函数
测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...
- 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?
虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...
- PHP危险函数总结学习
1.PHP中代码执行的危险函数 call_user_func() 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数. 传入call_user_func()的参数不能为引用传递 ...
- PHP危险函数的持续学习
记录下遇到过的PHP危险函数 0x01 escapeshellarg()与escapeshellsmd()联合 先给出官方的定义: escapeshellarg ( string $arg ) : s ...
- 一些需要禁用的PHP危险函数(disable_functions)
一些需要禁用的PHP危险函数(disable_functions) 有时候为了安全我们需要禁掉一些PHP危险函数,整理如下需要的朋友可以参考下 phpinfo() 功能描述:输出 PHP 环境信息 ...
- 【随笔】Apache降权和禁用PHP危险函数
测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...
- PHP操作用户提交内容时需要注意的危险函数
对于我们的程序开发来说,用户的输入是解决安全性问题的第一大入口.为什么这么说呢?不管是SQL注入.XSS还是文件上传漏洞,全部都和用户提交的输入参数有关.今天我们不讲这些问题,我们主要探讨下面对用户的 ...
- php常见的危险函数
代码执行的危险函数 eval() 把字符串作为php代码执行 早期php一句话木马都用这个 <?php @eval($_POST['shell']);?> assert() 检查一个断言是 ...
- 一些需要被禁用的php危险函数
phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级 ...
- 一些需要禁用的PHP危险函数
phpinfo()功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec().危险等级:高 e ...
随机推荐
- 常见排序汇总C&C++
常见排序主要有以下四种: 1.交换排序 2.选择排序 3.插入排序 4.归并排序 (以下代码基本都有输出每步排序结果) 一.交换排序 交换排序主要是冒泡排序和快排 1.冒泡排序 流程: (1)对数组中 ...
- BeetleX之TCP服务应用详解
BeetleX是.net core平台下的一个开源TCP 通讯组件,它不仅使用简便还提供了出色性能的支持,可以轻易让你实现上百万级别RPS吞吐的服务应用.组件所提供的基础功能也非常完善,可以让你轻易扩 ...
- 常见面试题之*args
这个地方理解即可,只是面试的时候会被问到,单独做了一下知识点的整理,不推荐使用. def self_max(a,b,c,d,e,f,g,h,k,x=1,y=3,z=4): #默认参数 print(a, ...
- java基础-谈谈你对面向对象的理解
一 前言 本篇文章的核心知识如下,主要是帮助大家更好的理解面向对象编程: 二面向对象VS面向过程 2.1 面向过程编程 面向过程编程(Process Oriented Programming )其意指 ...
- 《MySQL数据库》MySQL数据库安装(windows)
MySQL安装包和操作工具 链接: https://pan.baidu.com/s/1BTfrHwVR1uNBuB_E27N55g 提取码: dhbv 1.首先解压文件包,我这解压到E:\instal ...
- [从今天开始修炼数据结构]队列、循环队列、PriorityQueue的原理及实现
[从今天开始修炼数据结构]基本概念 [从今天开始修炼数据结构]线性表及其实现以及实现有Itertor的ArrayList和LinkedList [从今天开始修炼数据结构]栈.斐波那契数列.逆波兰四则运 ...
- 小白的springboot之路(十一)、构建后台RESTfull API
0.前言 开发系统中,前后端分离,后端一般返回RESTfull API,前端调用API构建UI,彼此分离.互相完全独立: 后台API中,我们一般返回结果码.提示信息.数据三部分内容,如图: 我们今天 ...
- 通过 Drone Rest API 获取构建记录日志
Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志. 获取token 登录进入drone,点头像,在菜单里选择token 复制token即可 API 介绍 Dr ...
- 权值初始化 - Xavier和MSRA方法
设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...
- 学生选课系统v1.0
最近两天写了下老师课上留的作业:学生选课系统.感觉自己写的特别麻烦,思路特别不清晰,平常自己总会偷懒,一些太麻烦细节的功能就不去实现了,用简单的功能来替代,直到自己这回写完这个系统(但自己写的比较lo ...