06.图片木马
本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、图片木马

图片码就是在一张图片中写上我们的一句话,然后利用php的文件包含特性,可以将我们的图片以php进行解析

先找一张图片,再创建一个php的一句话木马

适用:文件包含,解析漏洞
Pasted image 20241112195635.png

图片木马制作的两种方法

(1)在cmd里面敲击  copy  命令

copy 图片名字 /b + 脚本名字 /a 生成的名字

(2)把图片以记事本打开。保留前三行其他的全部删除。在最后加上木马即可。

注意:这种报错的图片不行

Pasted image 20241112201053.png

这种可以
Pasted image 20241112201104.png

第一种操作具体流程

Pasted image 20241112203428.png

Pasted image 20241112202256.png

2.上传成功
Pasted image 20241112203708.png

3.
127.0.0.1/upload-labs/include.php?file=upload/7020241112202320.jpg(相对路径,包含上传的jpg文件)
成功解析
Pasted image 20241112202928.png

4.链接
Pasted image 20241112203923.png

二、文件头检测

1.基本概念

图片的格式在防护中通常是不会使用后缀进行判断的依据,文件头是文件开头的一段二进制码,不同类型的图片也就会有不同的二进制头。
  JPEG (jpg),文件头:FF D8 FF E1
  PNG (png),文件头:89 50 4E 47
  GIF (gif),文件头:47 49 46 38

Pasted image 20241114194131.png

如果使用只有一句话木马的jpg等图片文件就不行
这时可以使用图片马

三、二次渲染

二次渲染:就是根据用户上传的图片,新生成一个照片,将原始的图片删除,将新的图片添加到文件夹中。

操作过程:

将图片马上传
将上传的图片下载
使用010editor进行图片比较

Pasted image 20241112214819.png

红色为渲染的地方,在灰色的地方重新写木马即可

四、木马其他绕过方式

upload-19
Pasted image 20241112224103.png

Pasted image 20241112224035.png

upload-20

依然是依靠代码审计找出漏洞,那么看看源码吧

isupload=false;msg = null;if(!empty($_FILES[‘upload_file’])){
//检查MIME
allowtype=array(image/jpeg,image/png,image/gif);if(!inarray(_FILES[‘upload_file’][‘type’],$allow_type)){
$msg = "禁止上传该类型文件!";
}else{
//检查文件名
file=empty(_POST[‘save_name’]) ? $_FILES[‘upload_file’][‘name’] : POST[savename];if(!isarray(file)) {
file=explode(.,strtolower(file));
}

    $ext = end($file);
    $allow_suffix = array('jpg','png','gif');
    if (!in_array($ext, $allow_suffix)) {
        $msg = "禁止上传该后缀文件!";
    }else{
        $file_name = reset($file) . '.' . $file[count($file) - 1];
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH . '/' .$file_name;
        if (move_uploaded_file($temp_file, $img_path)) {
            $msg = "文件上传成功!";
            $is_upload = true;
        } else {
            $msg = "文件上传失败!";
        }
    }
}}else{
$msg = "请选择要上传的文件!";}

相比较于上一关的源码,此处服务器端先是检查了MIME类型,然后判断save_name参数是否为空,为空就把文件本来名称赋值给file,savenamefile是否是数组

如果不是数组则将其拆成数组,然后数组最后一个的值(end函数就是取数组最后一个的值)同白名单做比较,符合jpg、png、gif中的一种就允许上传了。

在允许上传之后还要把数组的值拼接在一起对文件进行重命名。

所以我们可以构造save_name[0]=cs.php/ save_name[1]置为空 save_name[2]=jpg(一个白名单的合法后缀)。

总结:
把文件名分为两部分
修改后,其中第一部分是cmd.php
d第二部分是jpg
因为有count函数,不计算空的
拼接时拼接数组中的0和1下标的元素
最后拼接的是cmd.php.

Pasted image 20241112231041.png

Pasted image 20241112231133.png

思维导图在本地有

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇