近期想学习sql注入,但是一来网络上的资料参差不齐,难以系统的学习;二来随着程序员安全意识的提高,这种完全可以避免的注入漏洞越来越少见了,所以难以找一个合适的网站练手,于是乎,sqli-labs这种实验平台成为了学习的一个绝佳途径。
- 首先登陆https://github.com/Audi-1/sqli-labs
- 如果安装了git,可以直接在终端下使用
git clone https://github.com/Audi-1/sqli-labs.git sqli-labs
命令来生成一个名为sqli-labs的文件夹,远程仓库中的内容都在这个文件夹里。当然,也可以在网站里下载它的压缩包。 - sqli-labs需要有apache,mysql和php,mac自带了apache和php,只需下载mysql即可,但我是用本机自带的环境并没有成功安装sqli-labs,甚为困惑,所以我使用了XAMPP的集成环境。
先在网上下载XAMPP,安装成功后软件如图所示
点击Manage Servers,点击start all将服务全部打开
(如果本机已经安装了mysql 而Mysql Database未能打开,则应该先在系统偏好设置里将mysql停止。)
打开浏览器输入http://localhost ,若显示如下页面则表明正确
XAMPP的mysql数据库密码默认为空,但这会导致错误,所以需要更改XAMPP的数据库密码,打开浏览器输入http://localhost/phpmyadmin/ ,
进入账户点击localhost行的修改权限,之后点击修改密码,输入两遍密码后提交即可。
- 将sqli-labs文件夹移入XAMPP/htdocs目录下
- 进入sqli-labs/sql-connections 打开db-creds.inc,修改$dbpass为你xampp数据库的密码
(我设置的密码为root)
- 如此大功告成了么?打开浏览器输入http://localhost/sqli-labs
点击Setup/reset Database for labs,如果一切正常应该是这样的:
但你有可能是这样的:
对于这种情况,再经过我大量的百度和google之后得知,这是由于php5之后移除了mysql扩展导致的,进入sqli-labs/sql-connections
打开任意文件查看代码即可发现所使用的皆为如mysql_xxx()格式的函数,
- 针对这种问题
我们需要使用mysqli扩展,将此文件夹下的所有文件中的mysql_
替换为mysqli_
,还需要把mysql_error()
改为mysqli_error($con)
,将mysql_query($sql)
改为mysqli_query($con,$sql)
,在sql-connect-xxx的三个文件中,将mysqli_select_db
函数中的参数调换位置。 - 如此一来,便大功告成了!