其他分享
首页 > 其他分享> > [SUCTF 2019]CheckIn

[SUCTF 2019]CheckIn

作者:互联网

[SUCTF 2019]CheckIn

1.首先尝试使用一句话木马

illegal suffix!

2.尝试使用改后缀名的方式进行上传,发现存在<?检测

@eval($_POST["a"]); 提示:exif_imagetype:not image!,说明存在exif_imagetype函数,这个函数就是简单的检测下文件的首格式,很简单加个GIF89a去尝试即可 最终成功上传我们的图片马,但是如何去让图片马以php的方式去执行呢,最先想到的就是htacess的方式,尝试发现并不能使用成功。 4.看看大佬的wp,发现一种没见过的玩意.user.ini,正好借这个机会,把之前没太弄懂的htaccess拿来比较下,进行学习 > ### .htaccess > > httpd-conf 是 Apache 的系统配置文件,一个全局的配置文件,对整个 web 服务起作用;而.htaccess 也是 Apache 的配置文件,不过相当于一个局部配置文件,只对该文件所在目录下的文件起作用。 > > #### 实例 > > 在绕过文件上传的限制中,通常在 Apache 全局配置文件 httpd.conf 中有这样一条配置: > > ``` > AddType application/x-httpd-php .php .phtml > ``` > > 这条配置的意思就是将.php、.phtml 文件后缀的文件当做 php 文件执行,如果开启了这条配置,就可以上传.phtml 文件在执行 php 代码,这也就是为什么在文件上传时可以尝试上传.phtml,不过在高版本中这条配置默认是关闭的,也就是只能解析.php 文件后缀。 > > 或者这条配置: > > ``` > SetHandler application/x-httpd-php > ``` > > > > 将所有文件都解析为 php 文件。 > > 通常全局文件我们都是不可更改的,而 Apache 还有一个局部配置文件.htaccess,这个配置文件只对该目录所在的 web 目录起作用,例如:我们在 www 目录下有一个.htaccess 配置文件,配置内容为 `AddType application/x-httpd-php .jpg` ,将 jpg 文件当做 PHP 文件解析。这样就可以直接解析 jpg 后缀的 webshell。 > > ``` > // .htaccessAddType application/x-httpd-php .jpg// 1.jpg



访问 1.jpg,当做 PHP 解析。  



#### 局限

.htaccess 配置文件只在 Apache 服务器中起作用。  

### .user.ini

php.ini 是 php 的一个全局配置文件,对整个 web 服务起作用;而.user.ini 和.htaccess 一样是目录的配置文件,.user.ini 就是用户自定义的一个 php.ini,通常用这个文件来构造后门和隐藏后门。

#### 实例

php 配置项中有两个配置可以起到一些作用

auto_prepend_file = //包含在文件头auto_append_file = //包含在文件尾




这两个配置项的作用相当于一个文件包含,比如

// .user.iniauto_prepend_file = 1.jpg// 1.jpg// 11.php




也就是在一个目录下有.user.ini 这个配置文件,配置内容为上,有 1.jpg,同时该目录下还需要有.php 后缀的文件,`auto_prepend_file = 1.jpg` 这个配置的意思就是在当前目录下的.php 文件包含 1.jpg 这个图片,在此处相当于在 11.php 文件头插入了 `require('1.jpg')` 这条语句,也就是说相当于文件包含。
另一条配置包含在文件尾,如果遇到了 exit 语句的话就会失效。

.user.ini 使用范围很广,不仅限于 Apache 服务器,同样适用于 Nginx 服务器,只要服务器启用了 fastcgi 模式 (通常非线程安全模式使用的就是 fastcgi 模式)。  



#### 局限

在.user.ini 中使用这条配置的使用也说了是在同目录下的其他.php 文件中包含配置中所指定的文件,也就是说需要该目录下存在.php 文件,通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。  

但是有时可以使用 `../` 来将文件上传到其他目录,达到一个利用的效果。  

5.总结一下,htaccess这个方式是被用来使用在apache服务器中,对于局部的文件,让局部内的文件解析成为你想指定的文件

而.user.ini则是对于全局文件的,它可以起到一种类似文件包含的作用,它需要本来的文件夹中存在一个可执行的php文件,使用这个配置想,可以将我们的jpg格式的文件包含于这个php文件中去执行

标签:SUCTF,文件,配置文件,CheckIn,jpg,2019,ini,php,user
来源: https://www.cnblogs.com/lzwhehe/p/15541365.html