文件上传:Upload靶场11到17关详解。

Upload靶场11到17关。

Pass-11

这一关黑名单验证考的是双写绕过,因为查看源代码可以发现其中有一句如下图:

str_ireplace()函数会把$deny_ext中的内容替换为空。那么想要绕过替换就可以用bp抓包,并修改文件后缀为.pphphp,这里系统会从前往后检测,当检测到php时就会替换为空,于是就剩下了.php。具体操作如下:

上传一个shell2.php文件并用bp抓包,shell2.php文件内容如下:

修改包的内容如下:

放包,右键点击图片,选择新标签页打开图像如下:

可以看到shell2.php的内容已经被解析,如下图:

Pass-12

查看源码可以看出是一个白名单绕过,只允许上传jpg、png、gif结尾的文件,如下图:

根据提示可以猜到这一关可以通过%00截断来绕过检查。(GET型提交的内容会被自动进行url解码)

原理:在url中%00表示ascii码中的0,而ascii中的0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。

补充1:GET请求会对我们输入的内容进行自动编码,也就是说当我们输入%00时,就相当于输入了ASCII中的0,它是一个表示字符串结束的保留字符。

补充2:url编码就是%加上一个字符ASCII码的十六进制,比如:字符“a”的ASCII码是97,97的十六进制是61,所以字符“a”的url编码就是%61。

但是php5.3之后的版本就已经修复了这个漏洞,所以需要更改PHP的版本为5.3之前,如下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“Script Kid”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值