SQLi-Labs搭建及通关

**在 Windows 电脑上安装 sqlmap 并搭建 SQLi-Labs,需要先配置Python 环境(支撑 sqlmap)和XAMPP 环境(集成 Apache+MySQL+PHP,支撑 SQLi-Labs)。
一、工具下载:
1、Python(sqlmap 依赖):Python 官网下载(选 Stable Release,比如 Python 3.12.x);
XAMPP(Web + 数据库环境):XAMPP 官网下载(选 Windows 版本);
sqlmap:sqlmap 官网下载(点「Download zipball」);
SQLi-Labs:GitHub 下载。(点击进入之后自动下载)
二、工具安装
步骤 1:安装 Python(支撑 sqlmap 运行)
sqlmap 是 Python 编写的工具,必须先安装 Python 并配置环境变量:
1、运行下载的 Python 安装包,勾选 Add python.exe to PATH(关键!否则命令行无法识别 python 命令),然后点「Install Now」;
2、安装完成后,打开 命令提示符(CMD),输入以下命令验证:

python --version # 或 py --version

若输出「Python 3.12.x」则安装成功。

步骤 2:安装 XAMPP(搭建 Web+MySQL 环境)
XAMPP 集成了 Apache(Web 服务器)、MySQL(数据库)、PHP(解析脚本),是 Windows 下搭建 SQLi-Labs 的最优选择:
1、运行 XAMPP 安装包,选择安装路径(建议选简单路径,比如 C:\xampp,避免中文 / 空格路径);
2、安装完成后,打开 XAMPP Control Panel(XAMPP 控制面板),启动 Apache 和 MySQL 模块:
(1)点击「Start」按钮(启动后按钮会变绿,显示「Running」);

(2)若启动失败(比如 Apache 80 端口被占用):

  • 点击 Apache 对应的「Config」→「Apache (httpd.conf)」;
  • 搜索 Listen 80,改成 Listen 8080;
  • 搜索 ServerName localhost:80,改成 ServerName localhost:8080;
  • 保存文件后重新启动 Apache(此时访问地址会变成 http://localhost:8080)。
    3、验证 XAMPP 正常运行:打开浏览器访问 http://localhost(或 http://localhost:8080,若改了端口),能看到 XAMPP 欢迎页则成功。

步骤 3:安装 sqlmap(Windows 版)
1、将下载的 sqlmap 压缩包解压到任意路径(比如 C:\sqlmap);
2、打开 CMD,进入 sqlmap 目录:

cd C:\sqlmap

3、验证 sqlmap 正常运行:

python sqlmap.py -h或py sqlmap.py -h

若输出 sqlmap 的帮助信息(参数列表),则安装成功。

步骤 4:搭建 SQLi-Labs(Windows 版)
1、将下载的 SQLi-Labs 压缩包解压到 XAMPP 的 htdocs 目录(比如 C:\xampp\htdocs\sqli-labs);
2、修改 SQLi-Labs 的数据库连接配置:
(1)进入 C:\xampp\htdocs\sqli-labs\sql-connections 目录;
(2)用记事本打开 db-creds.inc 文件,修改为 XAMPP 的 MySQL 配置(XAMPP 默认 MySQL 用户名 root,密码为空):

<?php // 数据库用户名(XAMPP默认root) $dbuser ='root'; // 数据库密码(XAMPP默认空) $dbpass =''; // 数据库名(默认security) $dbname ='security'; // 数据库地址(默认localhost) $host = 'localhost'; $dbname1 ='challenges'; ?>

(3)保存文件。
3、初始化 SQLi-Labs 数据库:
(1)打开浏览器访问 http://localhost/sqli-labs(或 http://localhost:8080/sqli-labs,若改了端口);
(2)点击页面中的 Setup/reset Database for labs 链接;
(3)若页面显示「SQLi-Labs setup successful」,说明数据库初始化完成。
4、验证 SQLi-Labs 正常运行:访问 http://localhost/sqli-labs/Less-1/?id=1,能看到「Your Login name: Dumb」「Your Password: Dumb」则成功。

若出现error如下:

SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\sqli-labs\sql-connections\setup-db.php:29 Stack trace: #0 {main} thrown in C:\xampp\htdocs\sqli-labs\sql-connections\setup-db.php on line 29

是因为XAMPP 新版本(PHP 8.x)已经彻底移除了 mysql_connect() 这个老旧的 PHP 函数(该函数在 PHP 7.0 后就被废弃),但 SQLi-Labs 旧版本仍在使用这个函数,导致代码执行失败。解决方法如下:
1:修改数据库连接配置文件 db-creds.inc
路径:C:\xampp\htdocs\sqli-labs\sql-connections\db-creds.inc
用记事本打开,在原有代码末尾添加 $conn = null;(为后续 mysqli 连接赋值),最终代码如下:

<?php // 数据库连接配置 $dbuser ='root'; // XAMPP默认用户名 $dbpass =''; // XAMPP默认密码(空) $dbname ='security'; // 要创建的数据库名 $host = 'localhost'; // 数据库地址 $dbname1 ='challenges'; $conn = null; // 新增:初始化mysqli连接变量 ?>

保存文件并关闭。
** 2:修改数据库初始化文件 setup-db.php**
路径:C:\xampp\htdocs\sqli-labs\sql-connections\setup-db.php
全选原有代码,替换为以下内容:

<?php // 数据库连接配置(适配 XAMPP 默认设置) $dbuser = 'root'; $dbpass = ''; $dbname = 'security'; $host = 'localhost'; // 1. 建立 mysqli 连接(指定端口,避免XAMPP端口冲突) $conn = mysqli_connect($host, $dbuser, $dbpass); if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } mysqli_set_charset($conn, "utf8"); // 2. 执行批量SQL(DROP + CREATE + USE),并清空结果集(关键修复同步问题) $sql_batch = "DROP DATABASE IF EXISTS $dbname; CREATE DATABASE $dbname; USE $dbname;"; if (mysqli_multi_query($conn, $sql_batch)) { // 核心修复:循环读取所有结果集,清空缓冲区 do { // 获取当前结果集(即使无数据,也要读取) if ($result = mysqli_store_result($conn)) { mysqli_free_result($result); // 释放结果集 } } while (mysqli_next_result($conn)); // 遍历所有结果集,直到无更多 echo "数据库 $dbname 创建成功!<br>"; } else { die("创建数据库失败: " . mysqli_error($conn)); } // 3. 切换到 security 数据库(确保后续操作在目标库执行) mysqli_select_db($conn, $dbname); // 4. 创建 users 表(现在不会报同步错误) $create_users = " CREATE TABLE IF NOT EXISTS users ( id INT(3) NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(20) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; "; if (mysqli_query($conn, $create_users)) { echo "表 users 创建成功!<br>"; } else { die("创建表失败: " . mysqli_error($conn)); } // 5. 填充测试数据 $insert_data = " INSERT INTO users (username, password) VALUES ('Dumb', 'Dumb'), ('Angelina', 'I-kill-you'), ('Dummy', 'p@ssw0rd'), ('secure', 'crappy'), ('stupid', 'stupidity'), ('superman', 'genious'), ('batman', 'mob!le'), ('admin', 'admin'), ('admin1', 'admin1'), ('admin2', 'admin2'), ('admin3', 'admin3'), ('dhakkan', 'dumbo'), ('god', 'god'); "; if (mysqli_query($conn, $insert_data)) { echo "测试数据填充成功!<br>"; echo "=== SQLi-Labs 数据库初始化完成!===<br>"; echo "点击 <a href='../'>这里</a> 返回主页面开始闯关~"; } else { die("填充数据失败: " . mysqli_error($conn)); } // 6. 关闭连接 mysqli_close($conn); ?>

** 3:修改所有关卡的数据库连接文件(关键,避免后续闯关报错)**
SQLi-Labs 每个关卡都会调用 sql-connections/db-connect.php,需把这个文件的 mysql_* 函数也替换为 mysqli_*:
路径:C:\xampp\htdocs\sqli-labs\sql-connections\db-connect.php
替换全部代码为:

<?php include("db-creds.inc"); // 替换 mysql_connect 为 mysqli_connect $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } mysqli_set_charset($conn, "utf8"); ?>

若文件中没有db-connect.php这个文件,只有sql-connect.php、sql-connect-1.php、sqli-connect.php文件,其实是 SQLi-Labs 不同版本 / 不同关卡的数据库连接核心文件(替代了缺失的 db-connect.php),所有关卡都会调用这些文件来连接数据库。可通过以下步骤进行修改。

文件名作用
sql-connect.php大部分基础关卡(Less-1~10)的核心连接文件
sql-connect-1.php部分进阶关卡(如 POST 注入关卡)的连接文件
sqli-connect.php少数特殊关卡的备用连接文件

修改核心连接文件,sql-connect.php 、sql-connect-1.php、sqli-connect.php三个文件的内容修改一致,全选原有代码,删除后替换为以下适配 PHP 8.x 的代码,覆盖原有内容即可:

<?php // 数据库连接配置(适配 XAMPP 默认设置) $dbuser = 'root'; // XAMPP MySQL 默认用户名 $dbpass = ''; // XAMPP MySQL 默认密码(空) $dbname = 'security'; // SQLi-Labs 核心数据库名 $host = 'localhost'; // 数据库地址 // 替换旧的 mysql_connect() 为 mysqli_connect() // 第四个参数直接指定数据库名,无需再调用 mysql_select_db() $con = mysqli_connect($host, $dbuser, $dbpass, $dbname); // 检查数据库连接是否成功 if (!$con) { // 替换 mysql_error() 为 mysqli_connect_error() die('数据库连接失败: ' . mysqli_connect_error()); } // 设置字符集(避免查询结果乱码) mysqli_set_charset($con, 'utf8'); // 注:保留这个文件的“连接功能”即可,无需额外代码 ?>

步骤 4:重新初始化数据库
打开浏览器访问 http://localhost/sqli-labs/sql-connections/setup-db.php(或 http://localhost:8080/… 若改了端口),此时页面会显示:

数据库 security 创建成功! 表 users 创建成功! 测试数据填充成功! === SQLi-Labs 数据库初始化完成!=== 点击 这里 返回主页面开始闯关~

说明初始化成功,访问 http://localhost/sqli-labs/Less-1/?id=1,能看到「Your Login name: Dumb」「Your Password: Dumb」则成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260107163924]

作为一名经历过多次系统架构演进的老兵&#xff0c;我深知可扩展性对Web应用的重要性。从单体架构到微服务&#xff0c;我见证了无数系统在扩展性上的成败。今天我要分享的是基于真实项目经验的Web框架可扩展性设计实战。 &#x1f4a1; 可扩展性的核心挑战 在系统架构演进过…

[特殊字符]_压力测试与性能调优的完整指南[20260107165451]

作为一名经历过无数次压力测试的工程师&#xff0c;我深知压力测试在性能调优中的重要性。压力测试不仅是验证系统性能的必要手段&#xff0c;更是发现性能瓶颈和优化方向的关键工具。今天我要分享的是基于真实项目经验的压力测试与性能调优完整指南。 &#x1f4a1; 压力测试…

一文讲清:主流大模型推理部署框架:vLLM、SGLang、TensorRT-LLM、ollama、XInference

本文系统性梳理当前主流的大模型推理部署框架&#xff0c;包括vLLM、SGLang、TensorRT-LLM、Ollama、XInference等。 随着大语言模型技术的迅猛演进&#xff0c;推理部署框架作为贯通模型能力与落地应用的核心枢纽&#xff0c;其战略价值正持续攀升。本文旨在对当前业界广泛采…

豆包本地文件问答下线后的打开方法

豆包本地文件问答下线后的打开方法关键词&#xff1a;豆包本地文件问答、豆包离线问答、本地知识库、doubao 本地模型、RTX AI PC、本地 AI 问答一次“功能下线”带来的意外发现前段时间在整理本地资料的时候&#xff0c;我发现豆包的「本地文件问答」功能页面多了一个提示&…

【光子AI 2026 企业级 Agent 架构指南】别再把 Skill 当 Tool:Agent Skills × MCP 企业级落地全指南(最新定义澄清 + 场景大全 + 选型决策树+安全工程清单)

文章目录 拒绝“手搓”Agent:2026企业级架构指南——彻底搞懂 Agent Skills 与 MCP 的边界与选型 🚀 引言:AI 开发的“草莽时代”结束了 第一部分:正本清源——最新官方定义解读 1. Agent Skills:让 Agent 变“专家”的文件夹 2. MCP:AI 应用的“USB-C 接口” 第二部分:…

格雷希尔:G15F-KFYK-FD39 定制款快速密封连接器,适配自动化产线,赋能电驱动通讯接口的自动化密封测试

某新能源设备商联系到我们&#xff0c;为其电驱动上的通讯接口采购一批快速密封连接器用于气密性测试&#xff0c;该生产线为自动化产线&#xff0c;对连接器的适配性、稳走性、耐用性均提出了极高要求。格雷希尔定制款 G15F-KFYK-FD39 自动化连接器格雷希尔定制款 G15F-KFYK-F…

如何判断光耦 PC817 的好坏

判断光耦 PC817 的好坏对于开关电源电路板的维修非常重要&#xff1a;1. 光耦的功能隔离信号&#xff1a;PC817 可以有效隔离高压输入和低压控制电路&#xff0c;保护电路元件和人员安全。信号传输&#xff1a;光耦用于实现数据的可靠传输&#xff0c;特别是在噪声较大的环境中…

Go 语言的“舒适区”:为何在这张“鄙视链”金字塔中,Go 仅次于 C?

大家好&#xff0c;我是Tony Bai。最近&#xff0c;一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名&#xff0c;也不看 GitHub Star 数&#xff0c;而是完全基于一种简单粗暴的价值观&#xff1a;谁最不折腾人&#xff1f;在这张金字塔中&#xff0c;C …

大模型AI学习路线:从提示词工程到模型部署的全栈教程,90天变身高薪工程师

文章提供四阶段大模型学习路径&#xff1a;初阶应用(10天)掌握提示词工程&#xff0c;高阶应用(30天)学习RAG系统&#xff0c;模型训练(30天)实现微调&#xff0c;商业闭环(20天)完成部署。涵盖大模型基础知识、智能体开发、私有化部署等核心技能&#xff0c;提供实战项目和工具…

什么是企业机器人流程自动化RPA

企业RPA (Robotic Process Automation) 中文名&#xff1a;机器人流程自动化 本质&#xff1a;一种模拟人在计算机上执行规则明确、重复性高工作的软件“数字员工”。---一、核心功能&#xff08;它能做什么&#xff1f;&#xff09;它像一位不知疲倦、零错误的白领机器人&…

【分布式系统】02 现实世界的法则 —— 分布式系统的定义、模型与核心挑战

大家好&#xff0c;我是Tony Bai。欢迎来到《分布式系统&#xff1a;原理、哲学与实战》微专栏的第二讲。在上一讲中&#xff0c;我们告别了秩序井然的单体城堡&#xff0c;决定踏入广阔的分布式联邦。但在正式探索之前&#xff0c;我们必须回答一个根本问题&#xff1a;我们所…

分区操作系统、容器化、虚拟机的概念

分区操作系统&#xff08;通常指分时操作系统&#xff09;与 Docker 是完全不同层面的技术&#xff0c;分别解决不同的问题。简单来说&#xff1a; 分区操作系统&#xff1a;是一种操作系统类型&#xff0c;管理单个硬件上的多个用户/任务。Docker&#xff1a;是一个应用容器…

2025年广州市“人工智能+”典型案例集|附118页PDF文件下载

《广州市“人工智能”典型案例集》展示了AI在各领域的应用。关键点包括&#xff1a;AI制造&#xff1a;智能座舱、多模态大模型应用、PCB项目等&#xff0c;提升效率与精度。AI安全&#xff1a;智能机器狗、安全大模型、AI安管一体机等&#xff0c;保障公共安全。AI教育&#x…

FastAPI + LangGraph + Multi-Agent 完整工程源代码实现:含真实目录结构, Gateway / Agent / Tool / Memory 分层,完整源代码实现

FastAPI + LangGraph + Multi-Agent 完整工程源代码实现:含真实目录结构, Gateway / Agent / Tool / Memory 分层,完整源代码实现 FastAPI + LangGraph + Multi-Agent 完整工程源代码实现 这一章给出一个“能跑起来”的最小完整工程,把你要的 Gateway / Agent / Tool / M…

ArkUI-X 6.0 跨平台框架能否取代 Flutter?

大家好&#xff0c;我是老刘 最近ArkUI-X 6.0.0 Release 版本正式发布了。 很多兄弟跑来问我&#xff1a; “老刘&#xff0c;ArkUI 现在的跨平台能力能不能取代 Flutter&#xff1f;” “我是不是该去学 ArkTS 了&#xff1f;” 先抛出我的核心结论&#xff0c;别嫌扎心&…

自定义封装tabs,超出显示上下翻页按钮

效果展示&#xff1a;未超出&#xff1a;超出&#xff1a;代码&#xff1a;<template><div class"custom-tabs"><!-- 左侧翻页按钮 --><div class"scroll-btn left-btn" :class"{ disabled: !canScrollLeft }" click"…

2026年人工智能全景报告|附34页PDF文件下载

本文提供完整版报告下载&#xff0c;请查看文后提示。以下为报告节选&#xff1a;......文│HatchWorksAI本报告共计&#xff1a;34页。如欲获取完整版PDF文件如何学习AI大模型&#xff1f;我在一线互联网企业工作十余年里&#xff0c;指导过不少同行后辈。帮助很多人得到了学习…

还在只会 add/commit/push?醒醒吧:这 15 条 Git 命令,能把你从“记录员”直接抬成“仓库法师”

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我每个开发者都背得出 Git 的基础咒语&#xff1a;add、commit、push。它安全、顺手、像一条走惯了的老路。可问题是——真正让你变强的&#xff0c;不在路…

什么是MD-CLI

文章目录CLI和MD-CLI是什么为什么要有MD-CLIMD-CLI和传统CLI相比有什么优势MD-CLI和YANG是如何对应的MD-CLI&#xff08;Model-Driven Command Line Interface&#xff09;是基于YANG模型生成的既有机机交互又有人机交互能力的命令行工具。相比传统CLI&#xff0c;具有配置逻辑…

自定义tabs(支持横向/竖向排列)

效果展示&#xff1a;组件代码&#xff1a;CustomTabs.vue组件代码如下&#xff1a;<template><div class"custom-tabs" :class"[tabs-${type}, { tabs-vertical: type vertical }]"><!-- 横向布局 --><template v-if"type ho…