攻防世界php2,攻防世界 web进阶区 PHP2

攻防世界 web进阶区 PHP2

解题

首先打开网址查看题目

24c424043ac6b32081c584efc8438dc7.png

题目并没有给出什么有用的提示,尝试了在源代码中寻找提示、抓包寻找提示都没有得到什么有用的信息。所以尝试网站中有什么文件可以利用。

发现常用的index.php并没有什么用,这里新出来一个index.phps文件需要记住,提示在这个文件里。

3f24f3a47e77e45a7acb57e4fb3ed0a3.png

可以看到是一段不完全的php代码。在源代码中找到了注释掉的部分代码。

df27213396c9fbead786d999d30b945c.png

下面便可以整理代码进行代码审计。

4f877856da0e2464339ed092ceb721c2.png

可以看到在这段php代码中首先使用get方法获取了一个变量id。然后将这个变量与admin相比较,而很明显,这个比较的结果并不是我们想要的,所以我们接着往下看。在下面会将id以url的方式进行解密,然后在和admin及逆行比较。

我们要实现的是第二个比较,也就是要求id!=admin && ueldecode(id)==admin。

所以我们想办法来实现他们。

我们知道,首先在浏览器输入的url的时候会进行一次url解码,而题目的代码中又有一次url解码,所以是2次解码。

1f8d9b320cd8bbeacea20a1b1932b702.png

所以我们看到,首先第一次解码会解出%61dmin,第二次解码会解出admin所以第一次进行的比较是%61dmin!=admin第二次进行的比较是admin==admin,所以就可以得到我们的答案。

ba7eb5203ffa734b52ec38df17d58fbf.png

得到了我们的flag。这里需要注意的是get请求是在index.php中输入的,而不是在index.phps。

知识点

url编码/解码

在url编码中,数字和字母不变,空格变为+号,其他被编码成%加上他们assic码的16进制。使用函数urlencode()可以实现

在url解码中,数字和字母不变,+变为空格,其他依照ASSIC码进行解码。使用函数urldecode()可以实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值