网站上添加图片的原则,东莞外贸公司建网站,网站弹出公告代码,建设网站需要给钱吗关注这个漏洞的其他相关笔记#xff1a;SQL 注入漏洞 - 学习手册-CSDN博客 0x01#xff1a;SQL 注入漏洞介绍
SQL 注入就是指 Web 应用程序对用户输入数据的合法性没有判断#xff0c;前端传入后端的参数是可控的#xff0c;并且参数会带入到数据库中执行#xff0c;导致… 关注这个漏洞的其他相关笔记SQL 注入漏洞 - 学习手册-CSDN博客 0x01SQL 注入漏洞介绍
SQL 注入就是指 Web 应用程序对用户输入数据的合法性没有判断前端传入后端的参数是可控的并且参数会带入到数据库中执行导致攻击者可以通过构造不同的 SQL 语句来实现对数据库进行任意操作的一种攻击方式。
0x0101SQL 注入漏洞演示 实验工具准备 PHP 运行环境phpstudy_x64_8.1.1.3.zipApache2.4.39 PHP 5.6.9nts 实验环境PIKACHU 靶场 - 字符型注入get 参考PIKACHU - 靶场笔记合集 本次的实验环境我们采用现成的 PIKACHU 靶场PIKACHU 靶场的安装方法参考上面提供的链接这里就不多说了下面直接开始演示。
输入下面的链接访问实验环境 http://localhost/pikachu/vul/sqli/sqli_str.php
靶场要求我们输入 username该值是一个字符串类型的值我们可以随便输入一些内容进行测试 此时我们推测一下这个业务的查询逻辑笔者以伪代码的形式表示出来了 // 获取用户输入的 name$username $_GET[name];// 将用户输入的 name 拼接进预定义的 SQL 语句中$sql select * from username where name$username;// 将 $sql 中的内容传递到后端数据库执行并获取结果$result exec_sql($db_connect, $sql);// 如果查询到结果则返回 “欢迎”否则返回 “您输入的用户不存在”if ($result True) {// 成功查询到用户信息echo 欢迎你 . $username;} else {echo 您输入的用户不存在;}
在上面假设的业务逻辑中代码未对用户传递的数据做任何的过滤就直接拼接到了 SQL 语句中并传递给了后端因此会造成 SQL 注入漏洞 测试 Payload: or 11 #后端实际执行的的 Payload: select * from username where name or 11 # 如上我们通过传入 SQL 语句尝试与服务器后端的查询语句拼接成功让服务端返回了数据库中的所有内容。
除了让服务端直接爆出数据库内容我们还可以尝试去读取目标数据库中更多的内容甚至通过 MySQL 往目标服务器写入木马程序进而控制整个服务器。当然这都是后话上面主要就是简单演示一下 SQL 注入的攻击思路和危害更进一步的内容笔者后面会出单期讲。
0x02SQL 注入漏洞详解
0x0201SQL 注入漏洞产生的条件
SQL 注入漏洞的产生需要满足以下两个条件 参数用户可控 前端传给后端的参数内容是用户可以控制的。 参数带入数据库执行 传入的参数拼接到 SQL 语句中且被带入数据库进行执行。
0x0202SQL 注入通常出现的位置
一般的 Web 应用程序都是由 “视图层 业务逻辑层 数据访问层” 构成的如下图所示 我们以一个简单的登录操作讲解一下上图的流程
用户通过浏览器访问京东的首页进入了登录页面。用户在视图层输入了自己的账号和密码浏览器将用户输入的账号密码通过某种方式传递到服务器的业务逻辑层然后业务逻辑层将拿到的账号密码到数据库中进行匹配如果匹配成功则返回登录后的界面否则返回登录失败的提示。
SQL 注入发生的位置其实就是执行 SQL 语句的位置。在上面的流程中就是业务逻辑层将拿到的账号和密码到数据库中进行匹配的地方如果用户输入正常的账号信息则无问题但是如果用户传递过来的是 SQL 语句呢。
总的来说所有可能与后端数据库发生交互的地方都有可能出现 SQL 注入漏洞。
0x0203SQL 注入漏洞产生的危害 未经授权的数据访问攻击者可以利用 SQL 注入漏洞无需授权即可访问数据库中的数据从而窃取用户数据如用户凭证、个人信息或业务数据导致用户信息泄露。 数据篡改攻击者可以修改数据库中的数据导致数据的完整性受损。这可能导致数据不一致对业务流程和决策产生负面影响。 数据库被恶意操作攻击者可以对数据库进行增加或删除操作例如删除数据库中重要数据的表或篡改数据库的系统管理员账户。 . 服务器被远程控制攻击者可能获取服务器的最高权限远程控制服务器安装后门从而修改或控制操作系统。此外他们还可能破坏硬盘数据导致整个系统瘫痪。 网站被挂马传播恶意软件攻击者可以修改数据库中的一些字段值嵌入网马链接进行挂马攻击或者用来传播恶意软件。 影响业务运营SQL 注入攻击可能导致业务中断降低用户信任度损害品牌声誉甚至带来法律责任。
0x0204SQL 注入漏洞的防范措施 使用参数化查询或预编译语句而不是直接拼接 SQL 语句。 对用户输入进行严格的验证和过滤防止恶意输入。 使用最小权限原则为数据库账户分配必要的权限。 定期更新和修补数据库管理系统和应用程序的漏洞。 使用 Web 应用防火墙WAF等安全设备增强对 SQL 注入攻击的防御能力。
0x03参考资料 《Web 安全攻防渗透测试实战指南》 ISBN 978-7-121-34283-7