我已经四处寻找答案,但遗憾的是我的情况没有任何效果。
编辑:与其他答案不同,因为代码需要故意易受攻击,忽略最佳做法。
我正在网页上开发一个功能,它基本上允许用户使用表单查找并查看用户名是否在数据库的表中。如果是,则查询结果应该回显或显示回来。这可能听起来很奇怪,但有问题的网页是教网络漏洞,本练习的重点是让学生使用SQL注入来获取该用户名的密码。
这是PHP ...
<?php
$error=''; //
if(isset($_POST['submit'])){
if(empty($_POST['user'])){
$error = "Please enter a username.";
}
else
{
//Define $user
$user=$_POST['user'];
//Establish Connection with server by passing server_name, user_id
and pass as a parameter
$sqli = mysqli_connect("localhost", "root", "");
//Select Database
$db = mysqli_select_db($sqli, "#");
$query = mysqli_query($sqli, "SELECT username FROM sqlusers WHERE username
='$user'");
$results = mysqli_query($query);
$rows = mysqli_num_rows($query);
if($rows == 1){
echo $query;
}
else
{
$error = "Username is not in the database";
}
mysqli_close($sqli); //Close Conenction
}
}
?>
在HTML中我也有..
<?php echo $error; ?>
该功能应如下工作。学生使用表单检查数据库中的Username1。用户名1在数据库中,因此他们会收到一个回复说“用户名1”和“用户名1”。在数据库中。然后,使用SQL注入,他们改变查询以选择该用户名的密码,并显示&#39;用户名1密码1&#39;在数据库中。
我还在学习PHP,所以请原谅明显的错误。
感谢您的帮助,非常感谢任何帮助或提示!
答案 0 :(得分:-1)
请更改下面的查询
$query = mysqli_query($sqli, "SELECT username FROM sqlusers WHERE username
='".$user."'");
你在PHP中附加了变量的字符串时犯了一个错误。 请尝试上面的代码,它会对你有帮助。