攻防世界-web高级-php2

攻防世界-web高手进阶区-PHP2

php2

默认页面是/index.php
输入/index.phps 页面出现乱码 我们查看一下源代码,题目的源代码就出来了(用路径扫描没扫出来,看大佬的博客才知道,这次长个记性,把index.phps记起来)。

在这里插入图片描述
我们先看到第二句if语句:

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

当id=admin的时候key就会显示出来

然后再看到第一句if语句:

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

当id=admin的时候会输出一个not allowed! 并且退出
也就是说我们不能直接输入id=admin来拿到key值

再看到中间一句代码:

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

这句是进行一个url解码,在我们网页上输入网址位置也会进行一次url解码,这个时候我们拿出计算器算一下,代码中一句url解码 + 网页自带一句url解码,如果我没有算错的话应该是 2次 url解码(果然9年义务教育没白教)

然后这个时候我们可以想到,url解码 + url解码 = admin,然后我们把admin进行编码两下
用burp 的url编码或者网上找url编码网站一大堆,这里我用burp
在这里插入图片描述然后把最后的加密用到url里面
在这里插入图片描述我们输入?id=%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65

这样回车之后首先会对 %25%36%31%25%36%34%25%36%64%25%36%39%25%36%65 进行url解码,解码之后的结果就是 %61%64%6d%69%6e 。

然后就是执行代码里面的第一句if语句:

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

到这里的时候我们的结果就是id = %61%64%6d%69%6e
这样我们就成功绕过第一句if语句: id 不等于 admin

然后我们来到第二句:

$_GET[id] = urldecode($_GET[id]);               // 对id进行url解码一次

我们这个时候 id = %61%64%6d%69%6e 解码了就是: id = admin

然后执行代码最后一句:当满足id = admin 就输出key值,这个时候已经满足了

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

最后结果
在这里插入图片描述不懂评论区问,还不懂我分分钟
在这里插入图片描述
第一次写博客有问题请指出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值