SQL注入专题
1) SQL注入原理及拓展
a) 什么是SQL注入
b) SQL注入产生
c) SQL注入危害
2) MYSQL注入
a) 数据库A
i. 表名
ii. 列名
iii. 数据
b) 数据库B
i. 表名
ii. 列名
iii. 数据
获取字段数
获取数据库名
获取回显注入点
获取XX数据库下的表名信息
获取XX表下的列名信息
获取指定数据(from 表名)
3) 高权限文件操作注入
a) 数据库用户、操作系统(命令)
b) MYSQL读取文件、输入文件、查看用户及运用
4) MYSQL防护函数及注入设置
a) 魔术引号 magic_quotes_gpc
b) 安全函数 addslashes()
5) MySql高权限注入
a) 网站A不存在注入点,B存在注入点
i. 获取所有数据库
ii. 获取表名、列名、数据(追寻B数据库ekucms.)
6) 提交方式注入
a) POST、GET、COOKIE
i. POST(登录框注入)
ii. Cookie(抓包改包改数据,将SQL语句插入)
iii. GET(最普通注入)
7) HTTP头注入(浏览器内核测试:ie.icoa.cn)
a) 确定传输数据的位置
b) 将诸如代码写到该写的地方
c) 若没有数据包接收,则不会产生漏洞
8)参数类型注入(数字、字符、搜索型)
数字型
$_id=$_GET[‘x’]
字符型
单引号过滤前边字符,#号过滤语句后符号
搜索型
%为数据库搜索通配符,类似于字符型,运用单引号闭合语句
9)参数加解密注入
常见加密格式
Base64、md5加密
10)盲注,基于时间延迟
普通注入:效率高,兼容性差
盲注:效率低,兼容性高
函数:sleep()
If(条件,true,false)
Mid(str,1,4)
Ord ascii编码
查询字段数、在不知道数据库name的情况下猜解长度、获取表名、具体值、列名与猜解数据
Insert delete update limit 注入
Insert :a. updatexml()
b. extractvalue()
c. name_const()
update: a. sql语句组合拼接,保证sql语句正常运行
b. sql语句中闭合使用(符号或截断)
c. 每个不同注入方式和网站应用功能相关
delete : delete from xxx where xxx
limit 的用法
二次注入分析
Insert插入用户名注册
调用数据库中用户名作为条件进行操作
攻击者将用户名设置为构造sql语句代码进行绕过闭合
Cookie注入验证
1、首先找到传参地址:
asp?id=xxx
// 例如:http://www.example.com/news.asp?id=1
2、去掉参数,访问该url:
http://www.example.com/news.asp?
如果页面访问不正常,则说明该参数id是访问页面所必需的的参数,可以尝试继续注入。
3、记录并清空当前浏览器地址栏中的地址,在其中输入:
javascript:alert(document.cookie="id="+escape("xxx"));
//这里的xxx就是上一步中id=xxx中的参数值
4、再浏览器地址栏中输入原来的url地址(注意,这里输入的是不带参数值的url,如下):
http://www.example.com/news.asp?
按下回车,访问该url,如果发现页面正常显示了,到此可以证明,我们正在接受的页面存在request方法获取参数,可能存在cookie注入的风险