栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SQL注入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL注入

引言 所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字 符串,最终达到欺骗服务器执行恶意 SQL命令目的的入侵行为。 换言之,我服务器明明想要执行的是你用户提交的一个数据,可是你提交了一个数据 之后,还在数据后面加上了一个命令。 SQL注入的原因 SQL 命令可以进行查询、插入、删除等操作,直接将这些命令拼接起来。 所以你提交这些命令之后,就可以间接的操控数据库了。 例:

 对于该登录界面,如果SELECt * FROM TABLE WHERe USER='xxx' AND Password ='xxx'为真那么就可以登录成功。

那么如果我在User ID一栏输入的最后加上 'or 1=1#  那么该SQL语句是不是变成了SELECt * FROM TABLE WHERe USER='xxx' OR 1=1 #'AND Password ='xxx' ;

#是注释的意思,那么是不是后面的都被注释掉了,所以该语句的意思是不是就变成了如果USER等于我输入的值或者1=1那么就登录成功,因为1=1恒成立,那么是不是不管我输入什么都能登录成功,甚至不需要输入密码

SQL注入的分类

1.基于数据类型的分类:

数字型注入:输入参数为整型时,如 Id 、年龄和页码等; 字符型注入:输入参数为字符串型时,如姓名、职业、住址等; 两者最大的区别:字符型注入一般要使用单引号进行闭合,而数字型注入则不需要; 2.基于注入位置分类 GET 注入:注入字符在 URL 参数中; POST 注入:注入字段在 POSt 提交的数据中; Cookie 注入:注入字段在 Cookie 数据中,网站使用通用的防注入程序,会对 GET 、 POST 提交的数据进行过滤,却往往遗漏 Cookie 中的数据进行过滤 3.基于从服务器接收到的响应分类 盲注入:盲注不会展现任何数据库报错内容,它是依据构造真或假的问题对数据库进行“提问”,注入方式主要有两种:基于布尔值与基于时间。 • 布尔盲注 如在 MySQL 中判断数据名长度的输入为 1' and length(database()) = 10 # ,通过相应的正确与否判断数据名的长度是否为 10 ,猜测数据库中数据的具体内容 时,可以借助书本上 SUBSTR 、 LIMIT 、 ASCII 等一些特殊的命令及函数进行猜 测; • 时间盲注 基于时间的 SQL 盲注入方式通常是在 SQL 语句中添加延时函数,依据相应时间来判断是否存在 SQL 注入,常用的延时函数或指令有 sleep 、 repeat 等。 4、其他类型 • 延时注入:使用延时函数方式; • 搜索注入:注入点在搜索框中; • 编码注入:将输入的字符串进行编码,如 base64 编码; • 堆叠查询注入:同时执行多条语句; • 联合查询注入:使用 union 操作码合并两条或多条 SQL 语句; SQL注入的产生点 • 页面的搜索框、登录框、输入栏。 • 请求方式 • 请求头 总而言之,一句话:所有能与用户进行交互的地方都可能存在注入 SQL注入的常见检测字符 • ‘(单引号) • “(双引号) • --+ (注释) • # (注释) • and( 与 ) • Or( 或 ) • Xor( 非 ) SQL注入的思路 1. 判断是否存在注入,注入是字符型还是数字型 2. 猜解 SQL 查询语句中的字段数 3. 确定显示的字段顺序 4. 获取当前数据库 5. 获取数据库中的表 盲注测试的思路 1. 判断是否存在注入,注入是字符型还是数字型 2. 猜解 SQL 查询语句中的字段数 3. 猜解当前数据库名 4. 猜解数据库中的表名 5. 猜解表中的字段名 6. 猜解数据 为什么会有SQL注入 • 代码对带入 SQL 语句的参数过滤不严格 • 未启用框架的安全配置,例如: PHP 的 magic_quotes_gpc • 未使用框架安全的查询方法 • 测试接口未删除 • 未启用防火墙,例如 IPTABLES 。 • 未使用其他的安全防护设备,例如: WAF SQL注入的业务场景以及危害 • 包括登陆功能、搜索功能、详情页、商品购买等 • 危害包括数据库泄漏:数据库中存放的用户的隐私信息的泄漏; • 网页篡改:通过操作数据库对特定网页进行篡改; • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。 • 数据库被恶意操作:数据库服务器被攻击,数据库管理员账户被篡改。 • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。 如何防范-SQL注入 1.关闭 SQL 错误回显 2.使用成熟的 waf、数据库审计、云防护、 ips 系统 3.前端输入字符白名单验证(长度、类型等) 4.SQL 服务运行于专门的账号,并且使用最小权限 5.对输入的特殊字符使用转义处理
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号