下面是我写的一个表单查询数据库用的
代码没有进入过滤是存在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 --
|
