如何执行非持久性XSS附加到简单php搜索字段

如何执行非持久性XSS附加到简单php搜索字段,php,xss,Php,Xss,我有一个php搜索字段,在数据库中搜索用户并在表中输出 我想学习如何对搜索字段执行简单的非持久性XSS攻击 这是我的php: echo "List of user(s) found:<br><br>"; $query = "select display_name, email from members where user_name='".$_POST['search_name']."';"; $res = mysqli_query($Connect,

我有一个php搜索字段,在数据库中搜索用户并在表中输出

我想学习如何对搜索字段执行简单的非持久性XSS攻击

这是我的php:

echo "List of user(s) found:<br><br>";

    $query = "select display_name, email from members where user_name='".$_POST['search_name']."';";

    $res = mysqli_query($Connect,$query);

    if (mysqli_num_rows($res) > 0 )
    {
     echo "<table border=1>";
     echo "<tr><th>Display Name</th><th>Email</th></tr>";
     while($row=mysqli_fetch_assoc($res))
     {
      echo "<tr><td>$row[display_name]</td><td>$row[email]</td></tr>";
     }
     echo "</table>";
    }
    else
    {
     echo "User not found!";
    }
我曾尝试发送一些后台更改语法和警报,但似乎都不起作用

<div style="background:<?php echo $colour ?>;">
<script>alert(‘XSS injection’)</script>
有人能向我解释一下我将如何应对任何形式的攻击吗

NB:我希望它是一个POST方法,而不是


谢谢。

如果您只是想了解它们是如何工作的,那么您可以发布如下内容:

$_POST['search_name'] = "' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '";
select display_name, email from members where user_name='' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '';
这将允许您将XSS注入页面,并获取所有用户名/电子邮件

e:生成的查询如下所示:

$_POST['search_name'] = "' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '";
select display_name, email from members where user_name='' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '';
结果如下所示:

$_POST['search_name'] = "' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '";
select display_name, email from members where user_name='' OR 1=1 UNION SELECT '<script>alert(\"XSS Injection\");</script>', '';

您可以将数据注入查询,使其作为行添加到结果中,然后将其注入HTML。双重注射我很确定这不会起作用。一方面,没有相似之处。另一件事是,它不仅要输出返回的内容。你需要给它一个别名,并给它和上一个select相同的列分配。是的,这是一个公平点。尽管如此,XSS仍然可以工作e:经过编辑,它不依赖于“LIKE”,并且仍然有相同的结果,所以你的代码确实有效果。它检索所有用户并将其放在表中。虽然警报从未发生过!该值需要使用别名。实际上,联合只会将结果放在相同的列中