攻防世界Web高手进阶区WP(PHP2)

18 篇文章 0 订阅
5 篇文章 0 订阅

PHP2

在这里插入图片描述
打开题目环境
在这里插入图片描述
没啥线索,开御剑扫了 一下,也没扫出来啥东西
在这里插入图片描述

看了别人的wp,说能扫出来一个index.phps,可以看到源码(看来是我的御剑字典不够强大)
在这里插入图片描述
我去查了一下phps文件:

phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。其实,只要不用php等已经在服务器中注册过的MIME类型为文件即可,但为了国际通用,所以才用了phps文件类型。

回来看代码,页面中的代码明显不全,查看网页源代码
在这里插入图片描述

if(“admin”===$_GET[id])
{
echo("<p>not allowed!</p>");
exit();
}

这里要使admin===id不成立,才能继续执行下面的代码

$_GET[id] = urldecode($_GET[id]);

在这里插入图片描述

用get方式传入id,urldecode函数进行一次解码

if($_GET[id] == “admin”)
{
echo “<p>Access granted!</p>”;
echo “<p>Key: xxxxxxx </p>”;
}

如果id==admin为真,就可以得到key

总结一下id需要满足的条件:

第一步:id === admin 为假
第二步:对id进行url解码
第三步:id == admin为真

我们知道PHP中的===为全等号,左右两边必须数据类型和值都相等才为真。而PHP中的 == 会将左右两边的数据类型转换为一致的再进行比较。

id的构建思路:令admin中的一部分字母加密为url编码形式,通过第一步,然后第二步会进行解码,解码后仍为admin,成功通过第三步。

admin的第一个字母为a,我们可以找到a的url编码为61%
在这里插入图片描述
安装之前的思路,我们构建pyload为
id=61%dmin

在这里插入图片描述

发现没有出现key,说明我们构造的pyload有问题,再次分析发现,我们每次给浏览器传参数时,都会自动进行一次url编码和解码,所以我们的pyload中会被url解码两次,所以我们也要编码两次才行。

利用在线工具再次编码
在这里插入图片描述
构造pyload

id=%2561dmin

获得flag

在这里插入图片描述
总结:
1.PHP的urldecode函数 进行解码时要考虑到浏览器自身的 解码
2.PHP弱类型判断,== 和 ===的区别
3.有的情况下可以用phps文件类型显示源码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值