SQL注入之sqli-labs靶场搭建

文章目录

前言:

简单介绍一下这个靶场, sqli-labs 靶场属于经典的 SQL 注入靶场,是一个专业的 SQL 注入练习平台。sqli-labs 是一个印度程序员编写的,一共有 65 个关卡,关卡的类型包括但不限于联合查询、报错注入、布尔盲注、延时注入、Header 头部注入、WAF 绕过等,涵盖的范围非常广,对于初学注入的朋友来说非常友好。靶场使用 php 编写,如果有代码基础的朋友可以尝试分析一下靶场源码。

靶场中的特定挑战点可能存在多种技术解决方案,因笔者目前尚处于知识迭代阶段,文中难免存在覆盖不全的情况,请各位大佬评论区留言指正。

本地搭建靶场环境

服务器下载

网站服务器推荐使用 windows server 系列,可视化操作非常友好

下载地址:https://next.itellyou.cn/Original/Index?id=7ab5f0cb-7607-4bbe-9e88-50716dc43de6

PHPstudy 下载

搭建网站环境需要 web 容器、动态语言解析器和数据库三要素,对于小白来说不太友好。建议使用集成服务器环境快速搭建软件,例如 Tomcat、PHPstudy,这里主要介绍 PHPstudy 快速搭建 sqli-labs 靶场。

下载地址:https://www.xp.cn/php-study

新版为 8.1 版本

也可以在旧版入口下载历史版本https://old.xp.cn/download.html

源码下载

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

php7 版本下载:https://github.com/skyblueee/sqli-labs-php7

靶场搭建

将下载的源码解压到 PHPstudy 安装目录下的 www 安装目录下,修改源码中 sql-connections/db-creds.inc 文件中的 mysql 账号密码!!!(重要的事情三个感叹号)默认的 mysql 账号密码都是 root。

如果修改后的账号密码默认记事本无法保存,尝试使用 Notepad++编辑保存

想要修改数据库的密码,可以在左侧栏切换到数据库,点击修改密码。

打开浏览器访问 127.0.0.1,默认访问 80 端口,可以看到页面中显示 sqli-labs 和其它文件列表,点击 sqli-labs 就可以访问靶场。这里可以看出访问网站,本质上是访问服务器 www 目录下的源码文件。这里为了方便访问,我把文件名改为了 sqli。

点击 sqli-labs 访问靶场首页,点击 "Setup/reset Database for labs"来创建数据库,创建表并填充数据。

显示如下页面即为完成数据库的填写

接下来就可以开始打靶了

Page-1(Basic Challenges) 初级挑战

点击第一关,输入任意 id 值就可以开始 sql 注入之旅了。通关后直接在 url 栏更改 less 的值即可进入下一关

源码修改

在源码中$sql 下面添加两行代码,即可使输入的内容显示在页面上,便于学习

php 复制代码
echo $sql;
echo "</br>";

全文总结:

如果访问 ip 显示 403 Forbidden ,原因是没有开启目录索引,点击修改,进入高级设置,开启目录索引即可

如果使用的是旧版 PHPstudy,例如 2016 版本,开启目录索引方法如下:

打开 vhost-conf 配置文件

复制 ① 的内容到 ② 即可,本文的 phpstudy2016 版本是将靶场搭建在了 81 端口

PHPstudy 8.1 版本默认的是 php7.x,需要手动改为 php5.x 版本。因为在 php7.x 之后,就不再支持 mysql_connect(),而是 mysqli_connect()。

mysql 的版本过低是没有 information_schema 自带库的,不方便靶测试,mysql 的版本建议 5.5.x 及以上。

靶场的搭建建议在虚拟机内进行,搭建完成后保存快照,可以一键还原初始状态,非常的方便。本机访问使用 ipconfig 命令查看服务器内网 ip 即可。

文中使用的浏览器为 Firefox52.0.2 便携版,下载地址为:
https://mp.weixin.qq.com/s/whvbCj_078N5ZbgK7rFKCA


https://gitcode.com/open-source-toolkit/e9df0/blob/main/README.md

相关推荐
Tony Bai8 小时前
【Go开发者的数据库设计之道】07 诊断篇:SQL 性能诊断与问题排查
开发语言·数据库·后端·sql·golang
炬火初现13 小时前
SQL语句——高级字符串函数 / 正则表达式 / 子句
数据库·sql
编程充电站pro14 小时前
SQL 性能优化:为什么少用函数在 WHERE 条件中?
数据库·sql
TDengine (老段)14 小时前
TDengine 时序函数 DERIVATIVE 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)14 小时前
TDengine 时序函数 STATEDURATION 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
炬火初现1 天前
SQL——子查询
数据库·sql
武子康1 天前
Java-138 深入浅出 MySQL Spring Boot 事务传播机制全解析:从 REQUIRED 到 NESTED 的实战详解 传播机制原理
java·大数据·数据库·spring boot·sql·mysql·事务
孟意昶1 天前
Spark专题-第三部分:性能监控与实战优化(2)-分区优化
大数据·分布式·sql·性能优化·spark·big data
落日漫游1 天前
MySQL常用命令全攻略
数据库·sql·oracle
ptc学习者2 天前
oracle logwr,ckpt,dbwn 如何协同工作的
数据库·sql