目录
注释语句(sql注入时要注释掉后面的部分才能使整个语句正确运行,这里介绍几种方法。)
where条件语句使用(where语句起到过滤作用,筛选出符合结果的查询内容。where后的条件同样符合true和false的运算。)
Limit用法(使用查询语句的时候,经常要使用limit返回前几条或者中间某几行数据)
-
联合注入
- 联合查询是拼接在原查询语句下,要求结果数量与原结果数量相同。 select * from security.users where id=1 union select 1,2,3; (1,2,3并无特殊含义,换成其他数字或字符串也可以,这里只是站位表示一下。)
- 可借鉴
-
堆叠注入
-
报错注入
- 报错注入在没法用union联合查询时用,但前提还是不能过滤一些关键的函数。
- 报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。
- 报错注入有长度限制,不同的函数限制不一样。
- 报错注入常用到的函数
- updatexml的用法:
- 公式:?id=1 and updatexml(1,concat(0x7e,(查询的内容),0x7e),1)
- 举例:?id=-1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) -- +
-
布尔盲注
- 了解永真和永假的概念,这种可以通过网页上的两种不同的回显的注入,我们把他叫做布尔盲注。
-
注释语句(sql注入时要注释掉后面的部分才能使整个语句正确运行,这里介绍几种方法。)
- # 注释符
- -- + 空格注释符
- ;/* 注释符
-
where条件语句使用(where语句起到过滤作用,筛选出符合结果的查询内容。where后的条件同样符合true和false的运算。)
- 可以利用加上 and 1=2 (或者其他为false的语句)使原条件失效,也可以利用 or 1=1使原条件一定成立。
- and和or可以替换成 && 和 ||
-
Limit用法(使用查询语句的时候,经常要使用limit返回前几条或者中间某几行数据)
- 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15,从5+1开始算
- 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为为 -1。mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.从95+1开始算
- 如果只给定一个参数,它表示返回最大的记录行数目。mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT 0,n。
-
空格过滤(一般空格被过滤有如下替换方法)
- /**/
- %0a(url编码后的回车)
- 若不知过滤了什么字符可以一个一个字符尝试
-
SQL注入的疑似点
- url中的页面
-
SQL注入相关函数
- order by: 如果后面接的是整形的话,就是根据第几个字段进行排序。可用来判断有几个字节。
- union: 用于合并两个或多个select 语句的结果集
- group_concat:将一列的数据用一行全部输出,中间用逗号隔开
- substr:substr(string,start,length),start规定在字符串的何处开始,length规定被返回字符串的长度。,
-
数据库基础