我们在刚学习 SQL 注入的时候,往往都需要一个能 SQL 注入的网站进行 SQL 注入学习。如果直接去网上寻找存在 SQL 注入的网站对新手来说有些难度,因此我们一般都是在本地搭建一个能 SQL 注入测试的网站。
这里就来讲解一下 SQLi-Labs 的下载,安装,搭建教程。
注意: PHP 版本一定要设置成 PHP5 以上,PHP7 以下,PHP5 以上才有 information_schema 库,PHP7 之后的 mysql_ 都改成了 mysqli_** 了,所以用其他版本的 PHP 可能会出错。
SQLi-Labs 是一个专业的 SQL 注入练习平台,它适用于 GET 和 POST 等多场景的注入。
在下载源码前我们首先需要知道自己的 PHP 是什么版本:
下图是 php5.x 版本源码
环境:Windows 10 + PHP 5.45 + MySQL 5.5.53
由于 SQLi-Labs 需要 PHP+MySQL 的环境,我们使用的是 phpStudy 这个软件。
首先我们将刚才下载的源码压缩包解压到 phpStudy 的网站根目录下,如我的:C:\phpStudy\PHPTutorial\WWW\sqli-labs-master(为了方便访问我将目录更名为 sqli)
修改 \sqli\sql-connections 目录下的 db-creds.inc 文件内容,将数据库默认的信息修改为自己数据库的信息
//give your mysql connection username n password
$dbuser ='root';
$dbpass ='';
$dbname ="security";
$host = 'localhost';
$dbname1 = "challenges";
主要是修改 dbpass 的内容,部分 linux 下默认为空,phpStudy 的 Windows 版中默认为 root,如果使用其他环境则根据具体环境修改即可。
打开浏览器访问「http://127.0.0.1/sqli/」并点击「Setup/reset Database for labs」来初始化创建数据库
在浏览器打开 http://127.0.0.1/sqli/
就看到 SQLi-Labs 的内容了,分为基础 SQL 注入、高级 SQL 注入、SQL 堆叠注入、挑战四个部份,总共约 75 个 SQL 注入漏洞。
环境:Ubuntu 18.04 + PHP 7.2.24 + MySQL 5.7.30
所以需要安装 LAMP 环境,可以查看 Ubuntu 18.04 搭建 Lamp 环境。
根据自己服务器上 php 的版本下载相应的源码,我这里是 php7 的环境。
sudo apt-get install git
sudo git clone https://github.com/skyblueee/sqli-labs-php7 /var/www/html/sqli-labs
下载完成后进入 /var/www/html/sqli-labs 文件夹,找到 sql-connections/db-creds.inc 文件并修改其中的内容为我们的数据库用户名和密码。
//give your mysql connection username n password
$dbuser ='root'; //修改成你数据库的用户名
$dbpass =''; //修改成你数据库的密码
$dbname ="security";
$host = 'localhost';
$dbname1 = "challenges";
?>
修改完成后打开浏览器访访问 ip/sqli-labs,点击 Setup/reset Database for labs 进行安装
如果遇到以下情况,多半是因为配置文件的问题,Linux 默认没有密码,所以需要设置一下 MySQL 的密码。
这里我使用的是 Docker version 19.03.6
首先需要搜索镜像
docker search sqli-labs
这里我选择 acgpiano
docker pull acgpiano/sqli-labs
创建一个新的容器并运行,这里的名字 sqli-labs 和端口 9999 大家可以自行修改
docker run -dt --name sqli-labs -p 9999:80 --rm acgpiano/sqli-labs
访问 ip:port,同样的点击 Setup/reset Database for labs 初始化创建数据库,然后再次访问点击下面的题目即可。