攻防世界的php2

发布于:2022-11-05 ⋅ 阅读:(451) ⋅ 点赞:(0)

坐标:攻防世界https://adworld.xctf.org.cn/challenges/details?hash=cfde0863-d43b-40f2-94c9-fadcb1fea968_2&task_category_id=3

 一开始提示我们去认证这个网页:

因为一般网页都应该设有网页头部,所以我就试了试index.html和index.php,结果都不行 。

然后通过后台扫描工具发现除了index.php文件还有一个index.phps文件,了解到index.phps文件是记录php的源代码文件后访问index.phps得到代码如下表:

 发现代码不完善,打开网页源码发现完整代码:

下面就是最重要的代码分析的环节(因为博主是边做题边学php所以这对博主很困难的说)

         $_GET[id]表示我们要输入一个数给id,且根据"admin"===$_GET[id]知道我们赋的值会传递给admin,但根据3,4行如果我们使等号成立,那么代码不会往后执行,我们就无法得到key。

所以在第一大部分我们不能是admin=id

$_GET[id] = urldecode($_GET[id]);这个代码的意思使对id进行一次url编码,其中urldecode函数就是进行url编码的意思。

而我们都知道在访问网页时,网页会将我们输入的非法字符进行一次url编码,所以这个代码整体总共会进行两次url编码的过程。

在第二大段,代码要求我们经过两次url编码的admin=id则可以得到key。

总结

其实就是是我们输入的值进行两次url编码后变成admin。

知道原理后少做思考就可以知道id的值应该为a%2564min(不唯一)

输入后获得了flag

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到