SQL注入原理和SQLI-LABS实验环境搭建

SQL注入原理和SQLI-LABS实验环境搭建

文章目录

  • 1. sqli-labs实验环境搭建
  • 2. 更新kali系统中的火狐浏览器
  • 3. 在火狐浏览器中安装hackbar插件
  • 4. 熟悉各种闭合方式并通过hackbar插件进行探测
  • 5. 熟悉使用hackbar插件,通过order by判断查询字段数
    • 熟悉limit的使用
    • 熟悉order by的使用

1. sqli-labs实验环境搭建

主机:centos7 ip:192.168.31.128
在这里插入图片描述
关闭防火墙并设置开机不启动

systemctl stop firewalld.service
systemctl disable firewalld.service

在这里插入图片描述

vim /etc/selinux/config

将第7行改为selinux=disable
SQL注入原理和SQLI-LABS实验环境搭建_第1张图片
reboot重启
iptables -F 清空防火墙规则
下载rpm包

yum -y install httpd mariadb mariadb-server php php-mysql php-gd

SQL注入原理和SQLI-LABS实验环境搭建_第2张图片
(php-gd 库:gd 库是 php 处理图形的扩展库,gd 库提供了一系列用来处理图片的 API,使用 GD 库可以处理图片,或者生成图片。 在网站上 GD 库通常用来生成缩略图或者用来对图片加水印或者 对网站数据生成报表及验证码。)

开启httpd和mariadb服务

systemctl start httpd
systemctl start mariadb

测试apache服务是否开启

vim /var/www/html

phpinfo();
?>

SQL注入原理和SQLI-LABS实验环境搭建_第3张图片
测试没问题
配置mysql数据库root密码

mysqladmin -u root password “123456”
mysql -uroot -p123456

下载sqli-labs:https://github.com/Audi-1/sqli-labs

通过xshell上传到centos7
在这里插入图片描述
将sqli-labs包解压到/var/www/html目录

unzip sqli-labs-master.zip -d /var/www/html

修改一下名字方便访问

mv /var/www/html/sqli-labs-master/ sqli-labs

在这里插入图片描述
修改一下文件权限(apache默认运行用户为apache)

chown -R apache:apache /var/www/html/sqli-labs

SQL注入原理和SQLI-LABS实验环境搭建_第4张图片
修改密码

cd /var/www/html && vim sqli-labs/sql-connections/db-creds.inc

浏览器访问网址:http://192.168.31.128/sqli-labs/
点击导入信息
SQL注入原理和SQLI-LABS实验环境搭建_第5张图片
SQL注入原理和SQLI-LABS实验环境搭建_第6张图片
点击
SQL注入原理和SQLI-LABS实验环境搭建_第7张图片
关卡
SQL注入原理和SQLI-LABS实验环境搭建_第8张图片

2. 更新kali系统中的火狐浏览器

主机:kali2019-1a ip:192.168.31.129
SQL注入原理和SQLI-LABS实验环境搭建_第9张图片
删除旧浏览器文件和软连接

rm -rf /usr/lib/firefox-esr
rm -rf /usr/lib/firefox-bin
rm -rf /usr/lib/firefox
rm -rf /usr/bin/firefox

SQL注入原理和SQLI-LABS实验环境搭建_第10张图片
下载新firefox并通过xshell上传到kali
firefox连接:
https://www.mozilla.org/zh-CN/firefox/new/
在这里插入图片描述
解压到/usr/lib/目录下

tar -jxvf firefox-67.0.4.tar.bz2 -C /usr/lib/

创建软连接

ln -s /usr/lib/firefox/firefox /usr/bin/firefox

创建快捷方式

vim /usr/share/applications/firefox.desktop
[Desktop Entry] 
Version=666 
Name=firefox 
Name[zh_CN]=firefox-浏览器 
Exec=firefox 
Terminal=false 
Type=Application
Icon=firefox

SQL注入原理和SQLI-LABS实验环境搭建_第11张图片
SQL注入原理和SQLI-LABS实验环境搭建_第12张图片
命令行运行:firefox &

3. 在火狐浏览器中安装hackbar插件

连接:
https://github.com/HCTYMFF/hackbar2.1.3

unzip hackbar2.1.3-master.zip

下载后通过xshell上传到kali

打开firefox(在断网的情况下安装插件,不然会自动更新,最新的好像是要收费的)
在这里插入图片描述
SQL注入原理和SQLI-LABS实验环境搭建_第13张图片
SQL注入原理和SQLI-LABS实验环境搭建_第14张图片
SQL注入原理和SQLI-LABS实验环境搭建_第15张图片

4. 熟悉各种闭合方式并通过hackbar插件进行探测

centos7的ip:192.168.31.132(回到宿舍换成宿舍网络了)
kali的ip:192.168.31.129
SQL注入原理和SQLI-LABS实验环境搭建_第16张图片
这里粘贴一段第一关的部分源码
SQL注入原理和SQLI-LABS实验环境搭建_第17张图片
可以在目标机(centos7)中查看到
在这里插入图片描述
在源码内主要是这段:

29 $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

在第一关内刚刚进入时提示输入一个id
SQL注入原理和SQLI-LABS实验环境搭建_第18张图片
源码中的$id应该是个变量,前面会接受我们输入的参数,假设这里我们输入?id=1

http://192.168.31.132/sqli-labs/Less-1/?id=1
(这里的?表示传递参数)

相当于源码中的

29 $sql=“SELECT * FROM users WHERE id=‘1’ LIMIT 0,1”;进行执行。

试试其他方式

http://192.168.31.132/sqli-labs/Less-1/?id=1’ limit 4,3 --+

–+表示注释,后面的内容不执行

在源码内执行的大致样子

$sql="SELECT * FROM users WHERE id=’1’ limit4,3”

limit 4,3表示显示数据库中第4条以后的三条记录
而where id =1表示显示第一条记录
SQL注入原理和SQLI-LABS实验环境搭建_第19张图片
在两种限制条件下输出为0(就是什么也没有输出)
SQL注入原理和SQLI-LABS实验环境搭建_第20张图片
(补充:LIMIT 用法 LIMIT 是 MySQL 内置函数,其作用是用于限制查询结果的条数。
其语法格式: LIMIT [位置偏移量,] 行数 其中,中括号里面的参数是可选参数,位置偏移量是指 MySQL 查询分析器要从哪一行开始显示,索 引值从 0 开始,即第一条记录位置偏移量是 0,第二条记录的位置偏移量是 1,依此类推…,第二个参数为 “行数”即指示返回的记录条数。
一句话概括: 位置偏移量可以理解为跳过前 N 条记录,或从第 N 条记录开始,往后显示 N 条记 录)

关于闭合方式:闭合方式指开发人员在sql语句中的加在参数
在这里插入图片描述
就像这两个额冒号(忘记叫什么号了,就像这个‘’)

分析闭合方式:

先试试“”这种:http://192.168.31.132/sqli-labs/Less-1/?id=1‘
SQL注入原理和SQLI-LABS实验环境搭建_第21张图片
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘‘1’’ LIMIT 0,1’ at line 1

(您的SQL语法有一个错误;检查对应于MariaDB服务器版本的手册,在第1行中使用接近" 1 " LIMIT 0,1’的正确语法)

就是说‘1‘’ LIMIT 0,1‘这里出现了错误,当我们这样注入时相当于源码:

$sql=“SELECT * FROM users WHERE id=‘1‘’ LIMIT 0,1”;

就是因为这里多了个 ‘ 符号,所以会报错,所以有了这种经验后,以后注入就可以通过这种类似的方式判断闭合方式。

常见手动sql注入的闭合方式
r 1=1–+
'or 1=1–+
"or 1=1–+
)or 1=1–+
')or 1=1–+
") or 1=1–+
"))or 1=1–+
具体的使用的那种闭合方式还可以使用反斜杠\来判断,前提是网站会反馈给你错误的原因,不然的话以我现在的水平判断不了。。。。

5. 熟悉使用hackbar插件,通过order by判断查询字段数

在centos7端,进入数据库

mysql -uroot -p123456
use security
select * from use 

SQL注入原理和SQLI-LABS实验环境搭建_第22张图片

熟悉limit的使用

select * from users limit 3,2;

表示显示第三条数据以后的前两条记录
SQL注入原理和SQLI-LABS实验环境搭建_第23张图片

熟悉order by的使用

语法:order by 后跟上字段名时,是用于做排序,默认是升序。如果字段名后跟上 desc 则做降序。

select * from users order by username;

SQL注入原理和SQLI-LABS实验环境搭建_第24张图片
表示通过username顺序排序显示所有数据

用法 2:按第几个字段进行排序,如果超过查询的字段数,就报错 语法:select 字段 1,字段 2 from 表名 order by 数字;

select * from users order by 3;

SQL注入原理和SQLI-LABS实验环境搭建_第25张图片
表示按照第三个字段进行升序排序

如果是select * from users order by 2就和select * from users order by username一样的效果了,因为username在这里位于第二个字段,所以,如果是select * from users order by 4;在这里就会报错,因为这里只有三个字段:id,username,password
在这里插入图片描述

你可能感兴趣的:(kali学习,linux,数据库,mysql,centos)