.user.ini与exif_imagetype()函数绕过 - 图1

    进入题目应该是个文件上传的题目。

    那么上传的套路要么就是命令执行,getshell得到我们想要得到的东西

    我们先随便上传一个图片看看

    .user.ini与exif_imagetype()函数绕过 - 图2

    回显是

    .user.ini与exif_imagetype()函数绕过 - 图3

    说明有(<?)在里面 这是<?php的语法

    说明出题者想让我们不能使用php脚本语言。那我们可以使用别的

    .user.ini与exif_imagetype()函数绕过 - 图4

    构造语言上传回显

    .user.ini与exif_imagetype()函数绕过 - 图5

    他检查是否是图片用的是exif_imagetyepe 可以用GIF89a 欺骗绕过

    修改为:

    .user.ini与exif_imagetype()函数绕过 - 图6

    回显为:

    .user.ini与exif_imagetype()函数绕过 - 图7

    成功绕过 已经上传成功。

    我们看看这个目录

    .user.ini与exif_imagetype()函数绕过 - 图8

    空的。。。

    这。。。

    有个目录附件。有提示 .user.ini文件

    这里有个知识点

    .user.ini可以开启后门

    .user.ini实际上就是一个可以由用户“自定义”的php.ini,我们可以自定义除了PHP_INI_SYSTEM以外的模式,在执行php代码之前,系统会对.user.ini先做一个执行,然后才执行其他的php文件。

    我们这边利用.user,ini先执行auto_prepend_file函数,auto_prepend_file表示在php程序加载第一个php代码前加载的php文件,也就是先加载了qwq.jpg里面的文件,即一句话木马。

    所以上传

    .user.ini与exif_imagetype()函数绕过 - 图9

    auto_prepend_file=qwq.jpg这句话相当于当前文件夹中的所有php文件都会包含qwq.jpg

    所有先浏览器会先运行.uers.ini 把这个文件包含进去

    初始化index.php就会显示flag

    .user.ini与exif_imagetype()函数绕过 - 图10

    那么,我们可以猥琐地想一下,在哪些情况下可以用到这个姿势? 比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,你只是想隐藏个后门,这个方式是最方便的。

    .user.ini与exif_imagetype()函数绕过 - 图11

    像这个就有index.php