「SQL注入入门篇」SQL注入(三)

为什么我是web安全菜鸡啊!!!

Posted by 许大仙 on June 26, 2016

MySQL 数据库常见注入攻击技术

MySQL 数据库情况

在 MySQL 4 及之前版本,由于不支持子语句查询且配置文件 “php.ini” 配置文件中的 magic_quotes_gpc 参数设置为 “On” 时(默认开启),提交的变量中包含单引号,双引号,反斜线,and 和空字符时,会被数据库自动转换为含有反斜线的转义字符。 在 MySQL 5 版本数据库中,新增加了 information_schema 数据库,该库中储存了数据库信息内容,可以直接进行爆库、爆表、爆字段,攻击变得更简单。

MySQL 4 注入攻击方法

  1. 利用 order by 获得当前表的字段数
  2. 使用 union select 获取想要的数据库信息
  3. 由于不知道数据库中的表名和字段名,只能像 Access 一样使用常见表名和字段名进行猜解 (啊 D)

MySQL 5 注入攻击技术

  • 通过对 MySQL 的数据进行猜解获得敏感的信息,进一步获得网站控制权
  • 通过 load_file() 函数来读取脚本代码或系统敏感文件内容,进行漏洞分析或直接获取数据库连接账号、密码
  • 通过 dumpfile/outfile 函数导出获取 WebShell

手工注入攻击

注入点信息检测

  • 单引号判断法
  • 1=1和1=2判断法

注入类型判断

注入类型

  • 数字型注入 select * from news where id=$id
  • 字符型注入 select * from news where username='$name'
  • 搜索型注入 select * from news where password like %best%

注入方法

  • 数字型注入 select * from news where id=$id此处后面可以直接加语句 and 1=1
  • 字符型注入 select * from news where username='$name' 此处应当闭合引号 ' and 1=1 '
  • 搜索型注入 select * from news where password like %best% 此处应当闭合引号和百分号%' and 1=1 '%

注入点提交方式判断

  • GET 提交:可通过地址来进行注入
  • POST 提交:上传文件时、用户名密码登录时进行抓包(Burp),在 Burp 中进行手注测试;有时 POST 提交也会接受 GET 提交方式,可以通过补全地址的方式来进行测试
  • Cookie 提交:抓包后可修改测试

MySQL 相关语法

order by n 此语法意为按照第 n 个字段进行排序,n 应从 1 开始一直试验到报错。目的是用这种方法来判断字段数 union select 联合查询