- 知识点:.htaccess配置文件利用
- 具体 .htaccess配置文件利用等细节
- 收获一个查看文件的方法:readfile(); [php文件查看函数,hh~]
简介.htaccess文件:
.htaccess 文件是用于Apache 服务器下的一种控制文件访问的配置文件,它存放的是多条对目录操作的指令,其作用范围是当前目录以及所有子目录;
.htaccess文件上传漏洞解析:
新建一个txt,命名 .htaccess,向里面写入:
AddType media-type .jpg
这句话的意思是 :将目录下的.jpg格式文件当做 php文件解析,当然 .jpg 还可以改成其他格式;
这里还有另一种配置方法,向 .htaccess文件写入:
<FilesMatch "jpg|png|gif|txt">
SetHandler application/x-httpd-php
</FilesMatch>
这一句的作用与 AddType media-type .jpg 作用是相同的,jpg|png|gif|txt 将这些格式的文件当做 php 来解释执行;
解题:
打开解题网址,明显的文件上传题,审查源码,没有找到 js 等前端验证的信息,所以直接抓包一波~:
可以看到,图片马上传成功了;
但是直接上传的是 .jpg 格式,无法被当做 php文件执行,所以这里利用 .htaccess配置文件,写入:
<FilesMatch "jpg|png|gif|txt">
SetHandler application/x-httpd-php
</FilesMatch>
上传成功:
由于没有其他过滤,再传一个 2.jpg简单的图片马,就是一句话,只是文件以.jpg为后缀(其实这里文件后缀也可以是 txt等,因为 .htaccess配置文件设置的原因,请自行尝试其他文件后缀上传):
上传成功后,直接复制路径访问,然后蚁剑连接,在根目录下即可找到 flag,这里,蚁剑右键虚拟终端运行 cd ,cat 等命令来获取flag的做法是行不通的,因为加了一个 disable_function 的限制,对于这个问题,请阅读者自行百度;
此外,在翻看大佬关于解这道题的wp时,看到大佬运用了 readfile() 函数直接在页面上输出了flag,首先是在 一句话木马里面,写入 phpinfo():
然后查看 disable_functions,发现system()等被禁用,但是没有禁用 readfile():
所以可以直接:readfile(’/flag’);
然后访问,over: