图片码二次渲染绕过

目录

一、环境

1、代码

2、文件处理方式

3、图片码的制作

二、绕过图片重构

1、可行性分析

2、数据比对

3、完成绕过


一、环境

以upload-labs靶场第十七关为例

图片码二次渲染绕过_第1张图片

1、代码

源码为: 



  1. 任务

    上传图片马到服务器。

    注意:

    1.保证上传后的图片马中仍然包含完整的一句话webshell代码。

    2.使用文件包含漏洞能运行图片马中的恶意代码。

    3.图片马要.jpg,.png,.gif三种后缀都上传成功才算过关!

  2. 上传区

    请选择要上传的图片:

    '; } ?>

2、文件处理方式

    // 获得上传文件的扩展名
    $fileext= substr(strrchr($filename,"."),1);

    //判断文件后缀与类型,合法才进行上传操作
    if(($fileext == "jpg") && ($filetype=="image/jpeg")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromjpeg($target_path);

检查后缀,然后将上传的图片进行二次重构。

3、图片码的制作

 检查图片码

图片码二次渲染绕过_第2张图片

发现代码已经传上去了。

但是由于图片进行了重构,所以上传之后的图片是被打乱了的。所以图片码无法执行。

图片码二次渲染绕过_第3张图片

图片正常上传。

将图片重新下载回来

图片码二次渲染绕过_第4张图片 

查看图片是否发生改变 

图片码二次渲染绕过_第5张图片

发现图片里面已经没有我们传入的webshell了‘

二、绕过图片重构

1、可行性分析

图片的重构不会将所有数据都改变完全,我们可以根据传入的图片码和传入后进行处理过的图片码数据进行比对,找到没有被修改的字段,通过修改这些没有被修改过的字段,达到绕过图片重构的目的。

2、数据比对

图片码数据比对,使用工具010editor

图片码二次渲染绕过_第6张图片

 灰色的表示前后匹配的,所以我们重点查找匹配的

图片码二次渲染绕过_第7张图片 

图片码二次渲染绕过_第8张图片 

按照这样的原理进行修改,个人建议使用稍微大一点的图片。同时尽量选择.......多的地方修改,修改其他地方可能会导致图片出错。一两次失败很正常,尽量多尝试几次。

3、完成绕过

上传修改后的图片码

然后在进行文件包含,执行这个图片码,发现确实上传成功了。

图片码二次渲染绕过_第9张图片 

你可能感兴趣的:(android,java,开发语言)