我有一个家庭作业,它是一个网页(登录页面),任务是进入并绕过登录论坛,我首先看到的是页面的来源,我发现如果我想要用户名我应该去/page.phps目录,然后我就这样做了。进入该目录后,我被重定向到另一个带有这段代码的页面
<?php
$super_admin_access = false;
// Set our super-admin level user?
if (isset($_GET['user'])) {
$user = html_entity_decode($_GET['user']);
if ($user === "<root>") {
$super_admin_access = true;
}
}
?>
<div class="logo"><img src="../assets/images/challenge-priserv-logo.svg" alt="Nethub logo"></div>
<div class="login">
<form class="form" onsubmit="doLogin(); return false">
<div class="message message-error" id="login-error-msg" style="display: none">Denied!</div>
<div class="field">
<div class="label">Username</div>
<input type="text" name="username">
</div>
<div class="field">
<div class="label">Password</div>
<input type="password" name="password">
</div>
<!-- In case I forget, details are at page.phps -->
<div class="actions">
<input type="submit" value="Access server" class="btn">
</div>
</form>
</div>
我不知道我是否以正确的方式理解了php代码,但我首先想要的是以"<root>"
编写html实体格式"<root>"
,特别是有Did you see the comment in the source code suggesting you take a look at page.phps? Take a look. What does urldecode do? Can you do the opposite of urldecode?
提示说
"<root>"
所以我尝试使用用户名"<root>"
或编码的{{1}}登录我尝试删除配额但没有运气,我不知道是否有密码或类似的东西,我非常感谢任何给予的帮助,谢谢:)。
答案 0 :(得分:2)
首先它必须是$_GET['username']
不是$_GET['user']
,因为输入字段名称是"username"
而不是"user"
答案 1 :(得分:2)
表单输入的名称是用户名,但它会检查用户。要访问super-duper-mega管理员权限,请在URL中传递查询参数
http://yoururl/page.php?user=<root>
答案 2 :(得分:0)
看到这是一件作业,我不会直接回答,而是指出你正确的方向。
你肯定是在正确的轨道上,但你似乎对PHP如何处理字符串感到困惑。
让我举个例子。我们转到页面login.php?user=tom
。
<?php
$user = $_GET['user'];
$desiredUsername = "tom";
if ($user === $desiredUsername) {
echo "You're in!";
}
让我们来看看if()
在这种情况下正在进行的检查。
$desiredUsername === "tom"; // true
$desiredUsername === "frank"; // false
$desiredUsername === "jonas"; // false
当您在代码中设置$ user变量时,您将<root>
包含引号,如此... "<root>"
。当PHP代码检查是否$user === "<root>"
时,这种情况下的引号实际上只是指定我们想要查看$user
是否包含字符串<root>
。
测试使用带有和不带引号的编码实体"<root>"
的方法,看看会发生什么。