web安全的学习之路(十)

实验吧 php大法好


进入题目中,和前面做的题目很相似的是,这个也是在url中稍作修改,你就能看到需要审的代码,(我从其他的大佬那里了解到,这种题目叫做代码审计)
那就看看代码吧:

<?php
if(eregi("hackerDJ",$_GET[id])) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>


<br><br>

根据上面的代码,我们可以知道:
1.这是使用get方式输入的,所以我们可以构造url
2.在url中不能出现hackerDJ,否则的话,直接输出错误
3.但是在url解码之后,要出现hackerDJ才能回显出来正确的flag
既然知道了规律,很容易想到一个办法,那就是我直接url转码hackerDJ,这样子url中没有包含hackerDJ,还能在解码之后出现hackerDJ,所以我照着做了。。。。

id=%68ackerDJ

发现报错了

我意识到,我可能忽略了什么问题,所以我查阅了一些资料,后来发现了问题所在:
原来,在浏览器传递url到服务器中之前,浏览器会进行一次url转码
这就导致了我们的url中直接出现了hackerDJ
明白了问题所在,那就动手解决吧,我想了一个方法来解决这个问题:我把hackerDJ使用url编码两次,这样子就达到和之前同样的效果。

id=%2568ackerDJ

最后,我成功的解出题目!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值