SQL注入(1):概述、分类、靶场搭建
SQL注入概述
SQL注入即通过将SQL命令插入到WEB表单提交等地方,最终达到欺骗服务器执行恶意的SQL命令,从而进一步入侵服务器。
注入分类
按查询字段分类
- 字符型:当输入的参数为字符串时,被称为字符型
- 数字型:当输入的参数为整型时,可以认为是数字型注入
按照注入方法
- Union注入
- 报错注入
- 布尔注入
- 时间注入
- 堆叠注入
靶场搭建
环境:WindowsServer2022虚拟机
工具:
小皮phpstudy https://www.xp.cn/
靶机 https://github.com/Audi-1/sqli-labs
虚拟机网络设置与关闭防火墙
在VMware中,我们将虚拟机设置为桥接模式,然后我们可以通过ipconfig
查看到我们的ip地址
然后我们需要将环境的防火墙关闭,否则外部无法访问
PHP环境搭建
由于我们靶场环境是php5.x的版本,而我们下载安装后的phpstudy版本为7.x,因此建议对其进行降级。
接着我们将我们下载好的靶场,解压复制到小皮的网站目录下(图中“打开根目录”)
为了方便我们管理页面,我们把靶场改名为sqli
。然后我们开启Apache和MySQL,在实体机浏览器中打开我们上面通过ipconfig查询到的IP地址,如果出现下面页面证明PHP环境搭建完成
我们在地址后面加上我们目录的名字,例如10.0.0.218/sqli
就可以打开我们的靶场。
连接数据库
在我们构建完PHP环境后,还需要将我们靶机的数据库连接到MySQL服务。
在靶机的目录下找到sql-connections
,用任意编辑器打开db-creds.inc
修改用户名密码,如果你的小皮没有修改过MySQL的账户密码,则应该都是root。修改完成后保存,打开我们的页面,点击Setup/reset Database for labs
,如果页面出现大部分的successfully
则表明数据已经插入到数据库。
至此,我们的靶场环境就搭建完成了。
Docker搭建靶场
感觉在WindowsServer虚拟机上使用还是太“重”了,然后就想用docker搭建,研究了半天搭建PHP web项目,结果发现已经有成品在Docker Hub上,社区的力量还是强大。
拉取镜像
1 | docker pull acgpiano/sqli-labs |
根据镜像提供的指令,执行
1 | docker run -dt --name sqli-lab -p [PORT1]:80 -p [POST2]:3306 acgpiano/sqli-labs:latest |
[POST1]
处修改成本地空闲端口即可,为Web服务。[POST2]
为MySQL服务。
打开127.0.0.1:[POST1]
,选择Setup/reset Database for labs
初始化Database
接着我们还需要设置MySQL允许远程连接,以便我们在主机学习MySQL的结构时使用。
首先我们需要进入Docker的Shell内,执行以下指令进入MySQL
1 | mysql -u root -p |
切换到MySQL Database
1 | use mysql; |
开启远程访问权限
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '[PASSWORD]'; |
[PASSWORD]
修改成远程连接的密码。此处的密码不会影响本地连接的密码。
在你的数据库管理工具中测试