基于PHPstudy部署SQLi-labs靶场
一:SQLi-labs简介
SQLi-labs是由一个印度程序员开发,专门用于练习SQL注入的靶场,其中包含各种注入姿势,并适用于GET和POST等场景。
主要内容有:
1:基于错误的注入
(1)字符注入 (2)数值注入
2:报错注入
3:盲注
(1)基于Bool数据注入 (2)基于时间注入
4:MySQL读写文件
5:更新查询注入
6:插入查询注入
7:Header头部注入
(1)基于Referer注入 (2)基于UserAgent注入
(3)基于Cookie注入
8:二次注入
9:绕过WAF
(1)绕过黑名单/过滤器/注释剥离or & and 剥离空格和注释剥离 union 和 select
10:绕过addslashes()函数
11:绕过mysql_real_escape_string( )函数(在特殊条件下)
12:堆叠注入(堆查询注入)
二:WEB环境搭建
1:下载安装及配置PHPstudy
进入PHPstudy官网下载(https://www.xp.cn),将下载地安装包进行解压。然后点击安装(安装过程中如需要改变PHPstudy运行文件存储位置,则需点自定义安装),安装完成PHPstudy之后,打开页面(图1-1),在软件管理模块下载相对应版本的Apache、Mysql、PHP等应用版本(图1-2),若需更改Mysql密码,则在数据库模块更改(图1-3)【初始账号和密码密码均为root】。
图 1-1
图 1-2
图 1-3
查看PHPstudy是否搭建成功:
1:测试Apache是否安装成功:运行Apache软件,再点击网站模块,进入管理 —> 点击打开网站,出现“站点创建成功”即为安装成功。
2:测试MySQL数据是否安装成功:运行MySQL软件(注意:如本地已经安装MySQL数据库,需进行卸载,避免端口冲突,造成MySQL无法正常启动),打开本地MS-DOS界面,输入 mysql -hlocalhost -uroot -proot (命令解释: -h 表示登陆主机,远程登录则输入IP,本地登录输入localhost(可省略); -u 表示用户名; -p 表示相对应得密码)【使用MS-DOS登录之前需进行环境变量配置(将PHPstudy文件下得MySQL文件下的bin文件目录复制到环境变量中(过程如:图 1-4 、图 1-5、图1-6)。若MySQL安装成功,则如图1-7
图 1-4
图 1-5
图1-6
图 1-7
三:SQLi-labs靶场部署
下载SQLI-labs源码,并将文件放置于PHPstudy下的WWW目录中。
重要步骤:配置数据库连接参数
打开sqli-labs-master/sql-connections/db-creds.inc,适用文本编辑器编辑文件db-creds.inc。
编辑内容:
$dbuser =‘ ’; 在引号内填入所需要连接的数据库的名称。
$dbpass =‘ ’; 在引号内填入所需要连接的数据库的密码。
接下来,进入SQLi-labs站点。出现如下图内容,点击: setup/reset Databse for labs 。
进入下图内容,则表示搭建成功。
四:可能出现的问题
问题1:无法启动PHPstudy
问题产生原因:端口冲突。检查本地是否安装了Mysql数据库,造成默认端口3306使用冲突。
解决方案:不建议在MySQL.ini文件中更改端口;最直接有效的处理方案便是卸载本地Mysql数据库。
问题2:进入SQLi-labs中主页显示正常,进入具体关卡出现 error 提示字样。
问题产生原因:可能存在PHP环境不匹配。(SQLi-labs靶场源文件是使用的是PHP 5.X的版本进行开发,连接数据库的函数是Mysql_connect( ) ,PHPstudy默认下载的MySQL版本为7.x,使用的数据库连接函数是Myqli_connect(),且在PHP7.0之后的版本并不兼容5.x的代码连接数据库的函数Mysql_connect( ),但这里并不建议初学者更改函数,因为需要更改函数的地方很多,并且可能引发并发症,可以在熟悉之后进行函数更改尝试)
解决方案:需要在PHPstudy中的软件管理模块在线下载PHP 5.x的版本进行运行。但在运行站点的时候一定要将版本更改为php5.x。
问题3:进入具体关卡出现如下图报错(前提是PHPstudy中的MySQL服务正常开启)
问题产生原因:配置问题
解决方案:
第一步: 打开SQLi-labs的文件 sqli-labs – master 下的sql – connections ,使用记事本打开 db_creds.inc文件(内容如下图)。配置$dbpass = “ “ (密码为PHPstudy中Mysql的密码,如未设置则为初始密码:root)
第二步:在PHPstudy中运行SQLi-labs下的文件 sqli-labs – master,进入网站首页,点击setup/reset Database for labs,自动创建数据库,创建数据表并填充数据。(如图)
正常运行关卡:
问题4:进入首页,点击setup/reset Database for labs;出现:SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES:
Fatal error: Call to undefined function mysql_connect() in E:\phpstudy_pro\WWW\sqllab\sqli-labs-master\sql-connections\setup-db.php on line 29 的报错信息。(如图)
原因:PHP版本不兼容问题,PHP5.x版本时,php5.x连接Mysql数据库使用mysql_connect()连接,PHP7.x版本连接数据库使用mysqli_connect()连接。
解决方式1:在PHPstudy中的软件管理模块下载php 5.x版本,在开启站点时,将php运行版本设置为php5.x。
解决方式2:前往Php官网下载php5.x版本(前提:PHPstudy软件管理模块下载时可能出现“网络不稳定,无法下载”的提示,导致下载失败)
步骤:第一步:前往php官网下载php5.x版本,将下载包解压并放置在:phpstudy安装包路径下的php文件内(具体路径:如图)。
第二步:将下载的php5.x文件打开,将文件下的php.ini-development改为php.ini文件。
第三步:打开php.ini文件,将 extendion_dir =“ ”内容编辑为php5.x文件下的ext文件的绝对路径(如:extendion_dir =“E:\phpstudy_pro\Extensions\php\php5.3.29nts\ext”
第四步:保存php.ini文件,重启PHPstudy.
第五步:在phpstudy网站模块下点击管理—>PHP扩展—>勾选php_sql。
到了这一步,基本就是可以正常打开站点了。
但这里我使用的是“基本”,那不基本的情况是:当打开SQLi-labs站点,点击“setup/reset Database for labs”时,有出现了:“php startup:unable to load dynamic library "C:\php\php_mysql"-找不到指定的模块”的报错信息。
这个报错信息的出现主要是因为:PHP扩展目录模块中功能(如php_sql)需要依赖一些基础的dll文件(路径:php/ext),若系统没有找到这些基础的dll文件就会使扩展模块产生错误。
解决的方案有两种:(1)将Php内的dll文件拷贝放置在system32目录下(Windows 操作系统的系统文件夹,是操作系统的神经中枢,文件夹中包含了大量的用于Windows操作系统的文件。system32文件夹里主要用于存储 DLL 文件。目录路径:C:\Windows\System32)。 (2):将dll文件的路径在环境变量中进行设置。【path代表可执行文件的搜索路径,默认为windows目录和系统目录system32】
。