MySQL安全(二)SQL注入

2024-03-01 1404阅读

温馨提示:这篇文章已超过392天没有更新,请注意相关的内容是否还可用!

一、概述:

1、介绍

SQL注入就是指Web应用程序对用户输入数据的合理性没有进行判断,前端传入后端的参数是攻击者可控制的,并且根据参数带入数据库查询,攻击者可以通过构造不同的SQL语句来对数据库进行任意查询。

MySQL安全(二)SQL注入
(图片来源网络,侵删)
2、SQL注入的条件

(1)输入用户可控;(2)直接或间接拼入SQL语句执行。

3、审计方法

对于SQL注入漏洞审计,常见的方法是,根据SELECT、UPDATE等SQL关键字或是通过执行SQL语句定位到存在SQL语句的程序片段,随后通过查看SQL语句中是否存在变量的引用并跟踪变量是否可控。因SQL注入漏洞特征性较强,在实际的审计过程中我们往往可以通过一些自动化审计工具快速地发现这些可能存在安全问题的代码片段。如使用Fortify等自动化工具。

Java语言本身是一种强类型语言,因此在寻找SQL注入漏洞的过程中,可以首先找到所有包含SQL语句的点,随后观察传参类型是否是String类型,只有当传参类型是String类型时我们才可能进行SQL注入。

二、SQL注入的分类:

SQL注入的分类较多,一般可笼统地分为数字型注入与字符串型注入两类。

SQL注入构造恶意SQL语句的方法有:构造堆叠,构造闭合,构造报错,构造时间差,等等

SQL注入按照注入点类型来分分为:数字型注入,字符型注入,搜索型注入

SQL中注入按照提交类型来分分为:GET注入,POST注入,COOKIE注入,HTTP头部注入

SQL注入按照技巧分类的话可以分为:联合注入,布尔盲注,时间盲注,堆叠注入,报错注入。

1、数字型注入

访问http:xxx.admin.com?id=1这种形式的url,输入and 1=1与and 1=2,进行判定看是否会出现and 1=1回显正常,and 1=2回显不正常的情况。如果出现了一般就认为这里存在注入,并且是数字型注入。如果没有出现那么并不能排查这里没有注入,只是排除这里不存在数字型的注入。

2、字符型注入

url后输入’ and 1=1 and ‘1’=’1,’ and 1=2 and ‘1’=’1。看是否会出现报错的现象。如果存在我们可以进一步的闭合我们的语句。

3、可显注入

攻击者可以直接在当前界面内容中获取想要获得的内容。

4、报错注入

数据库查询返回结果并没有在页面中显示,但是应用程序将数据库报错信息打印到了页面中,所以攻击者可以构造数据库报错语句,从报错信息中获取想要获得的内容。

5、盲注

数据库查询结果无法从直观页面中获取,攻击者通过使用数据库逻辑或使数据库库执行延时等方法获取想要获得的内容。

6、时间盲注

常用函数 sleep()

分割函数 substr、substring、left

分割函数编码后可不用引号,ascii() hex()

一般时间盲注我们还需要使用条件判断函数

if(expre1,expre2,expre3)

当 expre1 为 true 时,返回 expre2,false 时,返回 expre3

7、布尔盲注

这种注入会出现在 注册、ip头、留言板等等需要写入数据的地方,如用sqlmap会产生大量垃圾数据。尝试性插入、引号、双引号、转义符 \ 让语句不能正常执行,然后如果插入失败,更新失败,然后深入测试确定是否存在注入。

8、二次注入

sql语句的变量并不是直接传入的变量,而是通过其它的方式保存到了数据库,形成二次注入。没有单引号的sql语句中,进行16进制编码,这样就不会带有单引号。

9、宽字节注入

字符注入的时候我们需要逃逸单引号,但是php提供了魔术引号开关magic_quotes_gpc和addslashes(),iconv()函数作为防御,特点是自动给传入的参数如单引号,双引号,反斜杠,%00前面加一个反斜杠,进行转义,避免单引号进行逃逸。单引号转义为 ‘ , mysql 会将 \ 编码为 %5c ,宽字节中两个字节代表一个汉字,所以把 %df 加上 %5c 就变成了一个汉字“運”,从而绕过转义。如果数据库是GBK格式而非默认的UTF-8格式,则我们利用两个url编码是一个汉字的特点,组合一个汉字从而解决”\“问题,完成单引号的逃逸。

10、http头部注入

user-agent:判定用户使用的操作系统,以及使用的浏览器的版本。

cookie:判定用户的身份,进行session跟踪可以存储在用户本地终端上的数据,简单理解为用户的一张身份辨别卡。

x-forwarded-for:是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。

client-ip: 数据库保存客户端IP的参数。

rerferer:浏览器向web端表明自己从哪个连接而来。

host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号。

三、SQL注入方式

1、#和_模糊查询

2、order by注入

3、union

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]