一、SQLi-labs简介
SQLi-labs是由印度程序员开发,专门用于练习SQL注入的靶场,其中包含各种注入姿势,并适用于GET和POST等场景。
主要包含:基础错误注入、报错注入、盲注、MySQL读写文件、更新查询注入、插入查询注入、Header头部注入、二次注入、绕过WAF、绕过addslashes函数、绕过mysql_real_escape_string函数、堆叠注入。
二、Windows搭建SQLi-labs靶场
1、基于PHPStudy进行靶场搭建,关于PHPStudy下载及安装:https://www.cnblogs.com/xingzhifeng/p/18701229
2、下载SQLi-labs,源码下载链接:https://github.com/Audi-1/sqli-labs.git
3、下载后解压对应文件,并放入phpstudy安装目录的WWW目录下
4、打开浏览器,输入“http://windows服务器ip/sqli-labs-master/” ,可以看到如下的界面,点击“Setup/reset Database for labs”,会出现Access denied的提示。这里我们要先配置下数据库文件。
5、打开sqli-labs-master\sql-connections\db-creds.inc,配置dbuser、dbpass为phpstudy中数据库的用户名和密码信息,修改后保存保存文件。
6、再去刷新刚报错界面,出现如下图片,则表示搭建成功。
三、Docker快速搭建SQLi-labs靶场
1、请先确保已经安装好了Docker。Docker可以快速实现搭建,不需手动配置;且安全测试靶场环境相互独立。是安全测试学习者非常青睐的一种部署方式。
2、执行:docker search sqli-labs。从docker hub上搜索sqli-labs,选择一个STARS最高的来下载。
3、执行:docker pull acgpiano/sqli-labs , 从docker hub拉取对应sqli-labs镜像。
4、执行:docker run -dt --name sqli-labs -p 81:80 --rm acgpiano/sqli-labs, 将镜像运行为容器
- -d 表示后台运行,返回容器id
- -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
- --name sqli-labs 将容器命名为sqli-labs
- -p 81:80 映射外部访问端口
- --rm 是指当其关闭后删除开启的资源
- acgpiano/sqli-labs 镜像名
5、浏览器输入:docker所在服务器ip:81, 出现如下界面
6、点击 Setup/reset Databse for labs,创建数据库成功则表示靶场部署成功。接下来即可开始SQL注入练习。