一道简单的文件上传和一些小收获

本文最后更新于:2022年1月22日 晚上

题目是[MRCTF2020]你传你🐎呢

这道题本身不难哈,主要是通过上传.htaccess文件绕过黑名单。

writeup

先把wp写了吧

image-20211117211218860

打开就是两张阴间图噢,页面没啥复杂的,就是个普通的文件上传。

但是本着ctf细致的精神我还是f12了一下,不出所料没啥收获。

一开始的时候我上传啥都会报错,当时有点懵比,现在想来可能是题目的代码有点问题?

情况类似于之前的那篇upload,就是上传真图片不行,写个🏇绕过反而可以上传,不管他了

总之大概收集了一下信息,大概就是php后缀名全家桶都过滤了

这里补充个没见过的后缀名.pht

这个时候基本上就要想到.htaccess和.user.ini

.htaccess主要针对于apache,在apache2.3.8以前的版本中,主配置文件中的AllowOverride默认为all,而到了以后的版本中默认为none,而且即使设为all,也会有很多指令无法被.htaccess所覆盖。因此这类攻击可以注意一下apache的版本

.user.ini主要针对php

直接burp传个.htaccess

1
2
3
<files 'test.png'>
sethandler application/x-httpd-php
</files>

image-20211117212603121

其实.htaccess还有另一种写法

1
2
3
<files 'test1.png'>
addhandler php5-script .png
</files> #指定.png文件由php处理器来处理

复现解题过程我就用的第二种,addhandler的作用是在文件扩展名与特定的处理器之间建立映射

这个时候再上传个一句话就可以了,蚁剑连接,得到flag。

一些小思考

wp就到此为止了,这里主要是记录一下遇到的一些奇怪的问题

image-20211117214832979

🏇传上去之后蚁剑连接可以读写文件,但是终端执行指令会返回ret=127

image-20211117214941638

web中通过post也无法正常执行命令

当时就有点奇怪

后面大概整理出这么几个点

  • ret=127是因为设置了disable_functions导致命令无法执行
  • 蚁剑能执行命令是因为蚁剑并不是通过命令执行来读取文件的?这个有待后面进一步研究
  • 对于disable_function的绕过姿势很多,以后整理一下

总结

这题不难,主要就是要会.htaccess大法,同理还有.user.ini.

对于文件后缀名的一些其他姿势,以后遇到再整理。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!