【问题标题】:html entities in a PHP codePHP 代码中的 html 实体
【发布时间】:2016-02-08 12:34:33
【问题描述】:

我有一个作业,它是一个网页(登录页面),任务是进入并绕过登录论坛,我首先查看的是页面的来源,我发现如果我想要用户名我应该去 /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 代码,但我首先想到的是以 html 实体格式编写 "&lt;root&gt;" 变成 &amp;#x22;&amp;#x3C;root&amp;#x3E;&amp;#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?

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

【问题讨论】:

  • 在网站上看过。它没有使用html_entity_decode,但实际上使用了urldecode。访问login.php?user=%3Croot%3E 作品。
  • 它没有显示标志
  • 非常感谢它的工作!
  • 但我想问一下为什么它不适用于 .php 的东西?

标签: php html entity


【解决方案1】:

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

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

【讨论】:

  • 它没有锻炼,我认为是因为问题是一个网页游戏(它不是一个实际的网站)
【解决方案2】:

鉴于这是一项家庭作业,我不会直接回答,而是为您指明正确的方向。

您绝对是在正确的轨道上,但您似乎对 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 变量时,您将用引号将 &lt;root&gt; 括起来,如下所示.. "&lt;root&gt;"。虽然 PHP 代码检查是否 $user === "&lt;root&gt;",但这种情况下的引号实际上只是指定我们要查看 $user 是否包含字符串 &lt;root&gt;

测试您使用编码实体&amp;quot;&amp;lt;root&amp;gt;&amp;quot; 的方法,无论是否带有引号,看看会发生什么。

【讨论】:

  • 我试过去login.php?user=&amp;quot;&amp;lt;root&amp;gt;&amp;quot;但是没用,我试过加引号和不加引号但没用,我想这是因为它是一个网页游戏,我的意思是不是一个实际的网站,我认为这是处理程序中的错误,我也无法编辑 php 代码,我只能访问页面(在游戏中),我认为绕过登录论坛
  • 如果您有兴趣自己尝试,我可以给您网站
  • 是的,我试过很多次,网站是game.cyberprotection.agency,如果你可以给我发消息@adoobii25@gmail.com,我会给你用户名和密码
  • 您绝对不应该将您的用户名和密码提供给互联网上的某些人
  • 我同意上述观点,但如果他不介意这样做,我愿意提供帮助。不过,在向我提供密码之前和之后将您的密码更改为随机密码。
【解决方案3】:

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

【讨论】:

  • 我曾尝试从元素面板更改它,但它不起作用,
  • 我的意思是输入字段不是脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 2012-07-07
  • 2010-12-29
相关资源
最近更新 更多