题目:攻防世界 题库 WEB PHP2 题目编号:GFSJ0234
解题思路:
点开容器链接,显示 Can you anthenticate to this website?
百度机翻中文为:你能认证到这个网站吗?
先上御剑扫描一次再说
很遗憾好像没扫描出来东西。
那就再试试F12大法,看看网页源代码有没有线索。
源代码看着也没问题
我就只好再去看网络流
发现有一个重定向,给定到了
请求网址:
http://192.168.101.1/html/redirect.html
引荐来源网址政策:
strict-origin-when-cross-origin
做不来了,百度搜。
解题过程:
看了同站大佬们的思路和解题,
https://blog.youkuaiyun.com/m0_74979597/article/details/131643749
代码审计:
<?php if("admin"===$_GET[id]) { echo("not allowed!
"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") { echo "Access granted!
"; echo "Key: xxxxxxx
"; } ?>意思是要用GET方法上传一个参数 id
id 直接等于admin的话,不被允许
但是上传id的值经过url解码后等于admin就可以通过。
admin的URL编码为:%61%64%6d%69%6e
直接访问
显示not allowed!
蒙圈,看到我编码后的url在访问时,id值自动被解码成了admin,后面仔细看教程,对第一个% 还要进行2次编码。
最后成功取得flag
收获和心得:
知识点1:常见的 PHP 脚本通常是保存在以 .php 为扩展名的文件上。这些文件可以存储在web 服务器的文档根目录中,以便通过浏览器访问和执行;经典的示例文件名:可能是 index.php 或 script.php,实际上可以选择任何合法的文件名作为 PHP 脚本的文件名。
知识点2:这个脚本文件是在服务器上运行的,不是在客户端浏览器上,我们得知道这个脚本文件里的代码,也就是说找到脚本源代码,php文件源代码通常在phps文件。
后面有去将上一个robots题目的容器打开,想看看index.phps。
结果如图,无访问权限,意思就是还真的有这个文件,只是不开放给你访问。这道题为了考察这个知识点,才开的权限?待我去多做几道题,我都试试看能不能访问。
知识点3:编码后参数%61dmin中存在特殊字符%,浏览器会自动进行URL解码,所以我们对%进行编码:%25 对第一个特殊字符%进行二次url编码,才可以防止上传的参数被PHP脚本解析前,直接解码,导致认证失败。