文件上传黑名单绕过

我们在做文件上传的题目的时候一般都是上传一个木马上去,比如一句话木马<?php @eval($_POST['cmd']);?>

原理:

利用文件上传漏洞,往目标网站上传入一句话木马,然后我们就可以用我们的蚁剑或者菜刀进行连接,获取服务器的控制权限。

一句话木马的含义:

我们这里还是用<?php @eval($_POST['cmd']);?>为例子

<?php  ?>:php代码的一种标准写法,如果我们不这样写,服务器是看不出这是一个php代码的。

@:表示后面的代码执行错误了也不会报错

Eval():括号内的语句字符串都可以当作代码来执行。eg:eval("echo 'animebucket' ;");就等于echo 'animebucket';

$_POST['cmd']:表示从页面获得cmd这个参数的之,既可以进行菜刀客户端的连接。

实验:

我们打开靶场的pass-03,然后查看一下源代码

3f164e62e36d4c188a62b41fd403cca9.png

题目中采用的是黑名单过滤的方法,但是上面的过滤并不完全,例如我们可以通过上传后缀名为*.php3,*.php5的文件,然后写入一句话木马,我们可以在一个php文件中写一个查看php配置的一个命令来看看能否成功。

我们先上传一个php文件看看会不会过滤掉

1aabe821122c4f3da7257c6f99dd1940.png

然后我们将后缀名改为php3或者php4然后在上传一次

d3025cbecb584f829849bc83708c3c5c.png

 

上传成功。

我们在看到Pass-04,先看看源代码

221fd4186e9741aebe9537cd2e1d9f6c.png

这次的黑名单不少,而且存在我们刚刚使用的php3,也过滤了何种不常见的后缀名,接下来尝试重写文件解析的规则实现绕过,首先我们要上转一个.htaccess的文件,内容为:AddType application/x-httpd-php.jpg

然后我们在上传一个含一句话木马的jpg文件。

什么是htaccess?

笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户 自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用 户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为 index文件等一些功能。

这个时候我们上传的shell.jpg被当作php解析了,为了后面的操作,我们最好是先回到更目录,清除一下上传的文件

 

我们在看到pass-05,还是先看看源代码

42f00e5b8021471ca4717962c9c03638.png

这一次过滤的更加彻底一些了,.htaccess格式的文件也做了过滤(最后一个,这里不好截图),但是也有一个缺点,没有统一后缀名,所以我们可以构造Php这种写法的后缀名来绕过黑名单过滤,没有特殊配置的情况下绕过方法对linux操作系统的服务器无法实现绕过,因为linux不区分大小写,只有Windows会忽略大小写,上传如下格式的文件至服务器中。

看到Pass-10,先将上传到文件清理一下,然后在看看源代码

74f8afff4015491bb31def08a02199dc.png

重点在第九行的位置$file_name = str_ireplace($deny_ext, "",$file_name);,作用是将黑名单里面的后缀名替换成空,但是由于程序只替换了一遍,所以这里我们可以采用双写绕过,即上传shell.pphphp,服务器替换掉一次后缀名后报错文件名为shell.php

上传之后也是可以访问成功的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值