代码执行漏洞原理:
代码执行漏洞是指应用程序本身过滤不严谨,导致用户可以通过请求将代码注入到应用程序中执行,简单的说就是用户输入的数据被当作后端代码来执行。
代码执行函数:
1.eval()和assert()函数
这两个函数原本的作用就是用来动态执行代码,所以他们的参数直接就 是php代码,
eval能执行多行数据
<?php@eval($_REQUEST[8])?>
而assert只能执行单行数据,如何执行多行数据呢,可以使用写入文件函 数

发现成功写入

2.preg_replace()正则替换函数
<?php preg_replace('/a/e',$_REQUEST[8],'asdf')?>
修饰符e可以表示被替换的字符替换成的数据可以当作代码执行

3.create_function()匿名函数
<?php$a = create_function('$id','echo $id);';//自定义函数$aecho $a(8); //调用函数$a 执行echo $id
?>
想要触发此匿名函数还需要调用,其实这个匿名函数去定义的时候类似 于
<?phpfunction 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的值

点击删除

此处存在代码执行漏洞


文章转载自是恒恒呐,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




