SQL注入小结
1. 注入原理
利用恶意不规范的代码进行sql查询,且能被sql执行器执行,达到利用数据库特性获取更多信息或者进行提权等目的
2. 分类
2.1 数字型
检测方法:
- id=1’ 页面异常
- id=1 and 1=1 页面正常,无差异
- id=1 and 1=2 页面正常,有差异
2.2 字符型
检测方法:
- id=1’ 页面异常
- id=1’ and 1=1 页面正常,无差异
- id=1 and 1=2 页面正常,有差异
基于以上两种注入类型,又可分为报错注入、盲注、宽字节注入、POST注入、Cookie注入等
下面分别介绍这几种注入类型
2.3 报错注入
根据页面的返回错误提取消息,下面为根据mysql数据库的一些特性提取错误消息
- 常用函数:
updatexml()、exractvalue()、floor()
2.4 盲注
盲注即页面正常,无差异。分为布尔型和时间型
2.4.1 布尔型
页面没有输出显示,也不输出SQL语句执行错误信息,只能通过页面返回正常与否来判断是否存在注入
2.4.2 时间型
即常说的延时注入,页面没有输出显示,也不输出SQL语句执行错误信息,只能通过延时来判断是否存在注入
2.5 宽字节注入
当magic_quotes_gpc=on;会在post、cookie、get方法接收的单引号、双引号、斜杠、NULL前添加一个反斜杠进行转义。通过利用这点,构造payload进行宽字节注入。
eg:
payload为:?id=%5d'
,添加反斜杠后为?id=%5d\'
,即?id=誠'
2.6 POST注入
注入字段在POST数据中;
2.7 COOKIE注入
注入字段在COOKIE数据中;
2.8 搜索注入
注入字段在搜索的位置;
2.9 base64注入
注入字符经过base64编码后注入;
3. 修复建议
严格数据类型、特殊字符转义、使用预编译语句、框架技术、存储过程
你是这白开水一样淡的日子里偷偷加的一颗糖~~