您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
php代码审计-代码执行注入
发布时间:2016-12-18 15:22:24编辑:雪饮阅读()
<?php
if(isset($_GET['moon'])){
$moon=$_GET["moon"];
eval("\$moon=$moon;");
}
?>
访问:
http://localhost/cs.php?moon=phpinfo()
访问以上案例会在浏览器中输出phpinfo函数的执行结果.
分析:由于eval函数可将字符串以php代码来执行而$moon的值就是phpinfo(),那么当$moon赋值于$moon的过程中就已经将phpinfo执行了一次。
assert函数也是如此
正则替换/e模式执行漏洞:
<?php
echo $regexp=$_GET['reg'];
$var='<php>phpinfo()</php>';
//正则替换函数,参数1为正则(被替换内容的匹配),参数2为替换后的内容,参数3为需要匹配替换的字符串对象
preg_replace("/<php>(.*?)$regexp",'\\1',$var);
?>
访问:http://localhost/cs.php?reg=<\/php>/e
这样访问也可以输出phpinfo的信息,因为/e模式下正则是允许将字符串以php代码来运行的。
或者:
<?php
preg_replace("/moon/e",$_GET['moon'],"I love xy");
?>
访问:http://localhost/cs.php?moon=phpinfo()
不过这个测试在5.2.5上有效,本人5.5.12没有测试出来
或者:
<?php
preg_replace("/\s*\[php\](.+?)\[\/php\]\s*/ies",'\\1',$_GET['moon']);
?>
访问:http://localhost/cs.php?moon=[php]phpinfo()[/php]
同样也是5.2.5测试有效,我5.5.12无效
关键字词:php代码审计
下一篇:php代码审计-sql注入