抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

基础知识

SQL注入分类

基于从服务器接收到的响应

  •  基于错误SQL注入
  •  联合查询的类型
  •  堆查询注射
  • SQL盲注
    
  •  基于布尔SQL盲注
  •  基于时间的SQL盲注
  •  基于报错的SQL盲注

基于如何处理输入的SQL查询(数据类型)

  •  基于字符串
  •  数字或整数为基础的

基于程度和顺序的注入(哪里发生了影响)

  •  一阶注入
  •  二阶注入
    一阶注入是指输入的输入语句对WEB直接产生了影响,出现了结果;二阶注入是指输入提交的语句无法直接对WEB应用程序产生影响,通过对其他的辅助间接对WEB产生危害。

系统函数

  1. version() – MySQL版本
  2. user() – 数据库用户名
  3. database() – 数据库名
  4. @@datadir – 数据库路径
  5. @@version_compile_os – 操作系统版本

字符连接函数

  1. concat(str1,str2,…) – 没有分隔符的连接字符串
  2. concat_ws(separator,str1,str2,…) – 含有分隔符地连接字符串
  3. group_concat(str1,str2,…) – 连接一个组的所有字符串,并以逗号分隔每一条数据
    三个函数能一次性查出所有信息

一般用于尝试的语句

PS: –+可以用#替换,url提交过程中编码后为%23

1
2
3
4
5
6
7
or 1=1--+
'or 1=1--+
"or 1=1--+
)or 1=1--+
')or 1=1--+
")or 1=1--+
))or 1=1--+

一般代码为:

1
2
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = '$id' LIMIT 0,1";

UNION操作符介绍

UNION操作符用于合并两个或多个SELECT语句的结果集。请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
另外,UNION结果集中列名总是等于UNION中的第一个SELECT语句中的列名。

评论