SUCTF CheckIn

128 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1ndex

0x00前言

a.关于图片马

图片马成功getshell的前提是靶标存在文件包含漏洞,而不是说直接说上传图片马(eg:1.jpg)就行了。你要让它能被服务端解析。

b.关于.user.ini

就是用户自定义的配置文件
实际上除了特定敏感配置选项(只能由php_ini_system修改)其余选项都能通过.user.ini修改

官方定义.user.ini:
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER[‘DOCUMENT_ROOT’] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

两个新的 INI 指令, user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。
与php.ini不同的是,修改.user.ini是不需要重启中间件的,只需要等待重新读取用户ini文件的间隔时间即可
在这里插入图片描述

参考文章

wooyun.js.org/drops/user.…

0x01 Brain.md

在这里插入图片描述
php各种后缀名绕过皆已尝试,预测是白名单
在这里插入图片描述
加上图片头即可绕过

exif_imagetype() 读取一个图像的第一个字节并检查其签名。如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。

可上传图片形式的文件 —> 图片马
对<?也做了检测 —> script绕过

本题中须知的重要的配置选项
在这里插入图片描述
截取官方文档(为保证原汁原味皆不做机翻)

auto_append_file string
Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the require function, so include_path is used.

auto_prepend_file string
Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require function, so include_path is used.

自动包含指定的文件,一个是在主文件之前,一个之后

理一下思路:
1.上图片马
2.通过上传.user.ini指定包含图片马(加上文件头)
3.注意此处利用存在前提! 当前目录下存在正常的php文件!不然即使包含了图片马也没有用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
done

0x02 rethink

对于服务器一些特殊配置选项可以稍作了解,拓宽思路
flag:每日一blog