代码执行漏洞原理:
代码执行漏洞是指应用程序本身过滤不严谨,导致用户可以通过请求将代码注入到应用程序中执行,简单的说就是用户输入的数据被当作后端代码来执行。
代码执行函数:
1.eval()和assert()函数
这两个函数原本的作用就是用来动态执行代码,所以他们的参数直接就 是php代码,
eval能执行多行数据
@eval($_REQUEST[8])
而assert只能执行单行数据,如何执行多行数据呢,可以使用写入文件函 数
发现成功写入
2.preg_replace()正则替换函数
'/a/e',$_REQUEST[8],'asdf') preg_replace(
修饰符e可以表示被替换的字符替换成的数据可以当作代码执行
3.create_function()匿名函数
$a = create_function('$id','echo $id);';//自定义函数$a
echo $a(8); //调用函数$a 执行echo $id
想要触发此匿名函数还需要调用,其实这个匿名函数去定义的时候类似 于
function a($id)
{
echo $id;
}
所以这里可以直接不调用而触发
4.array_map() 回调函数,调用某个函数,第二个参数必须为数组
下图是该函数用法
eval无法调用,eval比较特殊,不认为是函数,属于特殊写法。
5.特殊组合(双引号二次解析)
php版本5.5及其以上可以使用
"${phpinfo()}"; => 代码执行phpinfo()
php字符串可以使用复杂的表达式的 ${调用的函数};
漏洞复现douphp1.5
63和64行发现是键值分离将config表中的value值设置为POST传参中的键
发现在73和74行处删除图片,73行执行数据库语句正是要删除我们63行value,而value可控我们就可以删除任意文件了。
成功上传一个文件value=logo.jpg
我们可以构造我们上传的图片的数据包来控制value的值
成功控制value的值
点击删除
此处存在代码执行漏洞
原文始发于微信公众号(是恒恒呐):douphp代码执行漏洞
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论