PHP代码中的html实体

时间:2016-02-08 12:34:33

标签: php html entity

我有一个家庭作业,它是一个网页(登录页面),任务是进入并绕过登录论坛,我首先看到的是页面的来源,我发现如果我想要用户名我应该去/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实体格式&#x22;&#x3C;root&#x3E;&#x22;,特别是有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>"

所以我尝试使用用户名&quot;&lt;root&gt;&quot;或编码的{{1}}登录我尝试删除配额但没有运气,我不知道是否有密码或类似的东西,我非常感谢任何给予的帮助,谢谢:)。

3 个答案:

答案 0 :(得分:2)

首先它必须是$_GET['username']不是$_GET['user'],因为输入字段名称是"username"而不是"user"

答案 1 :(得分:2)

表单输入的名称是用户名,但它会检查用户。要访问super-duper-mega管理员权限,请在URL中传递查询参数

http://yoururl/page.php?user=&lt;root&gt

答案 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>

测试使用带有和不带引号的编码实体&quot;&lt;root&gt;&quot;的方法,看看会发生什么。