SQL注入的分类
布尔类型:注入真假的二元信息(比如1=1或1=2 and or || &),根据返回页面结果可以判断注入的SQL语句是否被数据库执行 。
延时注入: 注入真假信息后,如果页面无任何返回结果,可以添加函数(sleep函数)根据页面的响应时间判断注入的SQL语句是否被执行。
联合注入:使用union函数注入
报错注入:页面返回错误信息,或把注入的结果直接返回到页面中
搭建靶场
1.关闭selinux
getenforce
查看selinux状态
vim /etc/selinux/config
关闭selinux,打开配置文件,修改状态为disabled
setenforce 0
设置selinux为临时关闭状态
2.关闭防火墙
systemctl status firewalld
查看防火墙状态
systemctl disable --now firewalld
立即且永久关闭防火墙
3.关闭iptables
ipt
查看iptables
无特殊配置一般没有
4.安装lamp环境
yum -y install httpd mariadb-server mariadb- php php-mysql php-gd
5.启动Apache服务
systemctl enable --now httpd
6.启动数据库服务
systemctl enable --now mariadb
7.数据库设置密码
mysqladmin -uroot password "123456"
8,登录数据库
mysql -uroot -p123456
9.退出数据库
exit
10.写个测试页面,试验PHP代码是不是能够被解析
cd /var/www/html/
切换至站点根目录
vim phpinfo.php
编辑PHP文件
<?php
phpinfo();
?>
11.浏览器可以访问到PHP探针文件证明环境没有问题
12.上传靶场文件(GitHub下载)
13.解压靶场文件
ls
yum install -y unzip
安装解压工具
unzip sqli-labs-master.zip -d /var/www/html/
将文件解压到站点根目录(-d表示解压到什么位置)
cd !$
打开解压文件(!$
表示上一条命令的最后一个参0数/var/www/html/)
14.修改解压文件的权限
ll
查看解压文件的权限默认是root,但是服务器解析的权限是普通用户的权限,
ps -aux|grep httpd
查看当前文件解析用户为Apache,所以需要把站点所有的资源文件的权限改为Apache,这样Apache才可以修改查看删除的操作
chown -R apache:apache /var/www/html/
修改该目录下的所有文件(-R递归修改,包括目录内的文件)
ll
再次查看文件的权限是否为Apache
15.修改靶场文件名
cd..
返回上一级
mv sqli-labs-master/sqli-labs
修改靶场名
16.修改连接数据库的配置文件
cd sqli-labs/sql-connections/
切换文件夹
vim db-creds.inc
打开该文件
$dbpass=‘123456’
输入数据库密码
17.浏览器访问服务器ip/sqli.labs/
无法访问靶场的原因
1.主机与虚拟机之间的网络设置有问题
2.虚拟机没有开启Apache和数据库服务
3.文件名设置错误