代码执行漏洞

一、代码执行定义

应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,将造成代码执行漏洞。远程代码执行实际上就是调用服务器网站代码进行执行

代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行

二、代码执行函数

1、eval

将字符串当做函数进行执行需要传入一个完整的语句必须以分号 ; 结尾

<?php
eval('echo "hello";');
?>

2、assert

判断是否为字符串是则当成代码执行在php7.0.29之后的版本不支持动态调用

低版本

<?php
assert($_POST['a']);
?>

7.0.29之后的版本

<?php
$a = 'assert';
$a(phpinfo());
?>

三、执行方式

${}执行代码(中间的php代码将会被解析)

${phpinfo()};

eval(将字符串当做函数进行执行(需要传入一个完整的语句))

eval('echo "hello";');

assert(判断是否为字符串,是则当成代码执行)

<?php assert($_POST['a']);?>
<?php
$a = 'assert';
$a(phpinfo());
?>

四、靶场测试

fputs(fopen(shell.php,'w'),'<?php phpinfo();?>');
  • fputs() 函数写入文件,是 fwrite() 函数的别名
  • fopen() 函数打开文件或者 URL,“w”:写入方式打开,将文件指针指向文件头并将文件大小截零。如果文件不存在则尝试创建

成功创建

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值