- SQL注入概述
- SQL注入利用
- SQL注入探测
- SQL注入绕过
- SQL注入防御
- SQLMAP使用
一、SQL注入概述
1. 什么是SQL注入
服务端没有对用户提交的参数进行严格的过滤,导致可以将SQL语句插入到可控参数中,改变原有的SQL语义结构,从而执行攻击者所预期的结果。
2. SQL注入危害
- 获取数据(拖库)
- 读取敏感系统文件
- 写入webshell
- 命令执行
二、SQL注入利用
1. 联合注入
(1)什么是union?
union用于合并两个select的结果集。
- union必须由两条或者两条以上的select语句组成,语句之间使用Union链接
- union中的每个查询必须包含相同的列、表达式或者聚合函数,他们出现的顺序可以不一致(这里指查询字段相同,表不一定一样)
- 列的数据类型必须兼容,兼容的含义是必须是数据库可以隐含的转换他们的类型。
(2)什么是联合注入?怎么拿到其他表中的数据?
在mysql数据库中有一个数据库information_schema下的SCHEMATA表保存了所有的数据库名称;TABLES表保存了所有的表名称;COLUMNS表保存了所有的列名称。
2. 报错注入
利用页面返回的mysql报错信息,将想得到的数据通过报错信息带出。报错注入的利用方式和mysql版本有很大的关联。
3. 盲注
当不能直接通过显示数据来获得数据库数据时,需要使用其他方式判断或者尝试,这个过程就是盲注。
- 基本布尔盲注(根据页面返回内容判断)
- 基于时间盲注(根据页面响应时间判断)
4. 万能密码
数据库逻辑上是TRUE
命令 |
---|
’ or ‘1’ = '1 |
’ or 1 = 1# |
1’ ll '1 |
1’ ll 1# |
‘=’ |
‘-’ |
三、SQL注入探测
1. 判断数据库类型
- 端口
- 报错信息
- 猜测
2. 寻找SQL注入点
寻找与数据库交互的可控参数
- GET
- POST
- COOKIE
3. 确认注入点
确认注入点的核心思想就是判断插入的数据是否被当做SQL语句执行。
1. 区分数据类型:我们在确认注入点的过程还需要区分可控参数在SQL语句中的数据类型。
- 整型注入:select * from news where id = 1
- 字符串类型注入:select * from news where author = ‘admin’
- 搜索类型注入:select * from news where title like ‘%xxx%’
2. 内联式:内联式注入是指向查询注入一些SQL代码后,原来的查询仍然会全部执行。
3. 终止式:终止式注入是攻击者在注入SQL代码后,将原有的查询代码全部注释掉。
4. 堆叠:堆叠查询是指可以在单次数据库连接中,执行多个查询序列。简单的来说就是执行多条语句。
5. 事件延迟:攻击者注入的SQL语句能让本次查询引发时间延迟,例如mysql中sleep()函数或者benchmark()
四、SQL注入绕过
大部分情况下,都存在安全机制来防御SQL注入,但是补眼睛的安全机制就存在绕过的方式,来突破安全机制。
1. OR或AND绕过:
- 大小写变形:Or,OR,oR
- 双写绕过:oorr,anandd
- 使用 || && 代替。(注意对&&进行url编码)
2. 空格绕过
(1)使用/**/绕过过滤空格
- id=1’/**/AND/**/1=1#
(2)不使用空格绕过
- id=(sleep(ascii(mid(user()from(2)for(1)))=109)
- 1’||updatexml(1,concat(0x7e,version()),1)||‘1’='1
(3)特殊字符代替
- %09 TAB键(水平)
- %0a 新建一行
- %0c 新的一页
- %0d return功能
- %0b TAB键(垂直)
- %a0 空格
3. 注释符绕过
(1)替换绕过
- –空格
- –空格a
- #
- /**/
(2)闭合绕过
- id=1’ and '1
4. 大小写绕过:当安全机制并没有做大小写不敏感的处理,那么就可能存在大小写绕过。
- id=Union
5. 宽字节绕过
五、SQL注入防御
SQL语句预编译和绑定变量
使用足够严格的过滤和安全防御
六、SQLMAP介绍
SQLMAP是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是mysql,oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB。
kali自带sqlmap
warning :未经授权,不得转载
声明:本文旨在为学习网络信息安全的同学提供指引帮助,维护网络空间的安全
有问题的小伙伴请在下方留言,喜欢就点个赞吧;关注我,带你一起写bug
知乎:叄贰壹
简书:带只拖鞋去流浪