文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

upload-labs靶场Pass-16二次渲染png格式上传

2023-09-24 06:07

关注

 源码分析

$is_upload = false;$msg = null;if (isset($_POST['submit'])){    // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径    $filename = $_FILES['upload_file']['name'];    $filetype = $_FILES['upload_file']['type'];    $tmpname = $_FILES['upload_file']['tmp_name'];    $target_path=UPLOAD_PATH.'/'.basename($filename);    // 获得上传文件的扩展名    $fileext= substr(strrchr($filename,"."),1);    //判断文件后缀与类型,合法才进行上传操作    if(($fileext == "jpg") && ($filetype=="image/jpeg")){        if(move_uploaded_file($tmpname,$target_path)){            //使用上传的图片生成新的图片            $im = imagecreatefromjpeg($target_path);            if($im == false){                $msg = "该文件不是jpg格式的图片!";                @unlink($target_path);            }else{                //给新图片指定文件名                srand(time());                $newfilename = strval(rand()).".jpg";                //显示二次渲染后的图片(使用用户上传图片生成的新图片)                $img_path = UPLOAD_PATH.'/'.$newfilename;                imagejpeg($im,$img_path);                @unlink($target_path);                $is_upload = true;            }        } else {            $msg = "上传出错!";        }    }else if(($fileext == "png") && ($filetype=="image/png")){        if(move_uploaded_file($tmpname,$target_path)){            //使用上传的图片生成新的图片            $im = imagecreatefrompng($target_path);            if($im == false){                $msg = "该文件不是png格式的图片!";                @unlink($target_path);            }else{                 //给新图片指定文件名                srand(time());                $newfilename = strval(rand()).".png";                //显示二次渲染后的图片(使用用户上传图片生成的新图片)                $img_path = UPLOAD_PATH.'/'.$newfilename;                imagepng($im,$img_path);                @unlink($target_path);                $is_upload = true;                           }        } else {            $msg = "上传出错!";        }    }else if(($fileext == "gif") && ($filetype=="image/gif")){        if(move_uploaded_file($tmpname,$target_path)){            //使用上传的图片生成新的图片            $im = imagecreatefromgif($target_path);            if($im == false){                $msg = "该文件不是gif格式的图片!";                @unlink($target_path);            }else{                //给新图片指定文件名                srand(time());                $newfilename = strval(rand()).".gif";                //显示二次渲染后的图片(使用用户上传图片生成的新图片)                $img_path = UPLOAD_PATH.'/'.$newfilename;                imagegif($im,$img_path);                @unlink($target_path);                $is_upload = true;            }        } else {            $msg = "上传出错!";        }    }else{        $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";    }}

 简单的来说就是会把上传的文件在后台检测,把无关的代码过滤,或者被重写,然后在回显到web上。一个动图gif回显回来直接会被简化只留第一帧,会把后面几帧过滤,然后就回显回来就不会动了。

PNG的文件格式有个特性,就是在IDAT(图像数块)开始的地方写入字符串等等不会损坏图片的显示(一般改完都是一片黑)但是在kali里面是显示损坏的,因为改完还需要计算这个crc值(我这里对png的格式是简单的讲一下,想要了解跟多,可以去看看其他大佬的文章)

但是这样传,是传不上去的,会报错

寻找一番计算crc值的脚本,但是并没有找到,但是找到一个计算PLTE数据块crc值脚本,那么就需要有PLTE数据块的的png文件了,这种一般的图片是没有的所以我就直接放在这了,免积分下载!->colortype索引为03的索引彩色图像-网络安全文档类资源-CSDN下载

 这种的木马就需要覆盖在PLTE数据块里面,写入之后用脚本重新计算这个文件的crc值,然后修改文件里的crc值,然后上传就可以了,现在我们先写入

 

 然后保存,然后通过网上大佬的脚本,修改一下匹配字节的代码和文件名,就变成了下面这样

import binasciiimport repng = open(r'7.png', 'rb')a = png.read()png.close()hexstr = binascii.b2a_hex(a)''' PLTE crc '''data = '504c5445' + re.findall('504c5445(.*?)70485973', hexstr)[0]crc = binascii.crc32(data[:-16].decode('hex')) & 0xffffffffprint (hex(crc))

这个py脚本要用python2运行,高版本运行会报错,然后我们直接运行这个脚本

 然后就得到了这个文件的crc值了,然后把图片文件的crc值改成算出来的就差不多完成了

 然后保存文件上传,这边看到也是上传成功了

然后配合pass13关的文件包含漏洞连接一下

连接成功了,证明木马没有被过滤

最后,我试了gif的文件格式无论php代码插在哪里都会被过滤,jpg用脚本改出来的虽然可以正常显示但是传不上去,有大佬懂的话,欢迎私信讨论

来源地址:https://blog.csdn.net/FRANXX_02/article/details/127250556

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯