下面是我写的一个表单查询数据库用的
代码没有进入过滤是存在sql注入漏洞的

a.html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登陆</title>
</head>
<body>
<form action="a.php" method="GET">
<input type="text" name="id"><br/>
<input type="submit" value="点击"/>
</form>
</body>
</html>

a.php文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$id=$_GET['id'];
$s = "192.168.0.105";
$u= "root";
$p = "";

// 创建连接
$conn = mysqli_connect($s, $u, $p);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功"."<br/>";

mysqli_select_db($conn,'dvwa');
$a="SELECT last_name,password FROM users WHERE user_id='$id'";
$b=mysqli_query($conn,$a);
while ($DuQu=mysqli_fetch_assoc($b)) {
echo "\"".$DuQu['last_name']."\"".$DuQu['password']."<br/>";
}


mysqli_close($conn);
echo "关闭成功";
?>

在这里插入图片描述

在这里插入图片描述

sql的select的函数语句

union语句

操作符用于合并两个或多个 SELECT 语句的结果集
UNION 内部的每个 SELECT 语句必须拥有相同数量的列
sql注入就可以利用这个来进入查询其他表列的内容了
普通查询是这样的
下面是查询user_id和first_name
在这里插入图片描述

但是我要是添加上 union语句后面就可以在执行一个查询的语句了
在这里插入图片描述

但是我要是添加上 union语句后面就可以在执行一个查询的语句了

在这里插入图片描述

在上面的自己写的表单进行测试

在这里插入图片描述

1
'union select last_name,password FROM users -- 

在这里插入图片描述