题目
F12网页源代码什么都没有
这里要访问index.phps才能得到源码
index.phps 文件是一种特殊的PHP文件,通常用于Web服务器中的网站根目录下,作为默认的主页文件名。它是PHP源代码查看器,会以类似HTML的方式显示PHP代码,并对代码进行高亮处理。这种特殊模式通常用于演示和共享PHP代码,而不是作为生产环境中的主要文件扩展名。
index.phps文件的主要用途是提供给用户查看PHP代码,因为用户通常无法直接通过Web浏览器看到PHP文件的内容。当访问一个网站时,如果没有特别指定页面文件名,服务器会自动加载index.phps文件(如果存在)。
要在服务器上运行index.phps文件,需要遵循以下步骤:
- 获得一个运行PHP的服务器,可以选择使用本地服务器(如XAMPP、WAMP、MAMP等),或者使用远程服务器(如云服务器)。
- 配置服务器环境,安装并配置所选服务器软件,确保PHP解析器能够处理.php文件。
- 将index.phps文件放置在服务器的合适目录下,一般来说,PHP文件应放在Web服务器的根目录或可公开访问的子目录中。
- 运行服务器,启动选择的服务器软件,确保服务器正在运行。
注意,index.phps文件并非用于生产环境,而是更多用于开发、调试和共享代码的目的。在生产环境中,应使用编译后的PHP代码来确保安全和性能。
御剑扫一下,index.phps是自己加的本身没有
访问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>";
}
?>
Can you anthenticate to this website?
源码分析
-
初始检查:
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
这里,代码试图检查$_GET[id]
是否严格等于字符串"admin"
。如果是,它将输出"not allowed!"并终止脚本执行。
2. URL解码:
$_GET[id] = urldecode($_GET[id]);
这一行将$_GET[id]
的值进行URL解码。这是为了处理可能经过URL编码的值。
3. 第二次检查:
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
在URL解码之后,代码再次检查$_GET[id]
是否等于"admin"
。如果是,它将输出"Access granted!"和一个密钥(这里用xxxxxxx
代替)。
这里考查弱等于
将admin进行urldecode后就可以绕过,但是注意要编码二次,浏览器也会进行一次解码
playload: ?id=%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
提交报错,总是这样,有人知道为什么吗。重新开了一下靶场,flag都变了。