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. 修复建议

严格数据类型、特殊字符转义、使用预编译语句、框架技术、存储过程

posted @ 2019-12-18 20:28  吃不胖的ruanruan  阅读(143)  评论(0编辑  收藏  举报