逻辑"/>
1.update与注入逻辑
这里是对于Mysql update指令的注入讲解,首先要先来介绍一下update函数的使用 UPDATE是对Mysql中数据修改的指令,想要修改数据库中的一些数据就需要用到UPDATEUPDATE users
SET gold = gold+10000
WHERE username=admin
通过这一指令我们就可以对数据库中的数据进行修改将username=admin的这一列的gold加10000
现在来构建一个PHP页面和一个HTML页面 首先是test.html<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>SQL注入测试页面</title>
</head>
<body><div><form action="./index.php" method="GET">请输入您选择的用户要加10000元:<input type="text" name="username"><input type="submit" name="submit"></form></div>
</body>
</html>
之后我们来写一个index.php页面
<?phpinclude("./conf.php"); //这里存放了数据库的配置信息$username = $_GET['username'];$conn = mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);//连接数据库if(mysqli_connect_errno($conn)){die("连接数据库失败:".mysqli_connect_error());}mysqli_query($conn,"set names utf8");$sql ="update users set gold = gold+10000 where username = '$username';";echo $sql;mysqli_query($conn,$sql);mysqli_close($conn);?>
conf.php这里配置数据库信息
<?php$mysql_server_name = 'localhost';$mysql_username = 'root';$mysql_password = 'root';$mysql_database = 'test';
?>
首先我们可以看一下表结构,这里的gold现在是0
现在来访问一下test.html 点击了提交之后我们可以看到这里多了10000 这里因为并没有对前端传过去的数据进行校验,所以一定存在SQL注入漏洞 后台执行的SQL语句是UPDATE users SET gold = gold + 10000 WHERE username = 'admin';
这里我们构建一个这样payload
' or 1 = 1 #
所以后台执行的SQL是
UPDATE users SET gold = gold + 10000 WHERE username = '' or 1 = 1 #
这里的#注释会注释掉之后的东西
这里我们来提交数据 可以看到所有的用户都修改了数据更多推荐
1.update与注入逻辑
发布评论