面试可能会提及

image.png
数据库:database()
informaton_schema
● .tables 表名
● .colums 列名

  1. 闭合符号
  2. order by 判断回显字段 , UNION SELECT 1,2,3,4查看显示出错字段数
  3. 库——表——列——值

判断sql注入

小刚师傅做法
利用两个单引号
1个单引号报错 ——>
2个单引号不报错 ——> sql(90%)

正常情况下都会过滤单引号 可以使用unicode编码尝试绕过单引号过滤 index.php?id=1%u0027

json数据,一般使用Jackson和fastjson 这个两个库都是有有unicode和hex的编码特性的 故我们遇到json数据也可以尝试编码绕过单引号过滤

判断数据库类型

端口判断

  1. oracle:1521
  2. msssql:1433
  3. mysql:3306

系统架构组合识别

  1. asp,dotnet,iis:msssql
  2. php:mysql,postgresql
  3. java:oracle,mysql
  4. apache:mysql,postgresql

报措信息判断

  1. ACCESS:错误提示Microsoft JET Database Engine错误'80040e14'
  2. --说明是是通过JET引擎链接数据库的,则表明数据库为ACCESS数据库
  3. Mssql:一般带有Microsoft SQL Server
  4. Oracle:一般带有ORA-XXX

特殊符号

  1. access注释符号:
  2. Access中没有专门的注释符号
  3. 使用空字符"NULL"(%00)当作注释符号
  4. mssql,oracle,postgresql注释符号:
  5. -- 单行注释
  6. /*...*/多行注释
  7. mysql注释符号:
  8. #单行注释符号
  9. --+和#号一样,但是后边必须有个空格,没空个视为两个减号
  10. /*aaaa*/可用于多行注释

其他

  1. 字符串拼接判断
  2. 内置函数判断
  3. 特殊语句查询
  4. 其他

all in all

信息收集:

  1. 数据库类型
  2. 数据库版本
  3. 数据库用户
  4. 数据库权限
  5. 获取数据:
    获取库信息
    获取表信息
    获取列信息
    获取数据

    提权:

  6. 执行命令

  7. 读文件 读取中间件配置文件,读取数据库配置文件
  8. 写文件 写webshell

sql语句.pdf