实验9 基于WebGoat平台的SQL注入攻击
实验9 基于WebGoat平台的SQL注入攻击
1.实验目的
熟悉WebGoat平台,在该平台上实现SQL注入攻击。
2.实验内容
(1)下载webgoat-server-8.2.2.jar。
(2)搭建java环境。
(3)运行webgoat。
(4)实施SQL注入攻击。
3.实验步骤
(将实验过程及运行结果截图放入实验报告中)
启动webgoat

第九题

第十题

第十一题

第十二题

第十三题

4.实验思考
(1)举例说明SQL 注入攻击发生的原因。
SQL注入攻击发生的原因通常在于应用程序对用户输入的处理不当,未能正确区分用户输入的数据和SQL代码。
假设有一个简单的Web应用程序,它使用以下PHP代码来根据用户提供的用户名查询数据库中的用户信息:
<?php $username = $_GET['username']; // 从URL获取用户输入的用户名 $query = "SELECT * FROM users WHERE username = '$username'"; $result = mysqli_query($connection, $query); ?>
在这个例子中,如果用户通过URL提供以下输入:
http://example.com/search.php?username=' OR '1'='1
那么拼接后的SQL查询将变成:
SELECT * FROM users WHERE username = '' OR '1'='1'
由于条件’1’='1’总是为真,这个查询将返回users表中的所有记录,而不仅仅是具有指定用户名的记录。这就是一个典型的SQL注入攻击示例,它利用了应用程序对用户输入处理不当的漏洞。
(2)从信息的CIA 三要素(机密性、完整性、可用性)出发,举例说明SQL 注入攻击造成的破坏。
一、机密性破坏
案例:攻击者可以通过构造恶意的SQL语句,绕过正常的身份验证和授权机制,获取到未经授权的数据。例如,攻击者可能通过拼接字符串,使得SQL语句中有条件永远为真,从而无需判断其他条件就能查看数据库里全部人的信息。这些信息可能包括用户账号、密码、个人资料等敏感数据。
二、完整性破坏
案例:攻击者可以通过修改查询条件或执行恶意的更新语句来篡改数据库中的数据。例如,攻击者可以在SQL语句执行的时候更改其他数据,如将某用户的salary修改为$100,或者删除某些重要记录,这将破坏数据的完整性,并可能影响业务流程的正常运作。
三、可用性破坏
案例:攻击者可以通过发送恶意的SQL查询或指令,消耗数据库系统的资源,导致其无法正常响应合法用户的请求。例如,攻击者可以通过注入恶意的SQL代码来删除数据库中的重要表或数据,或者通过注入恶意代码来使数据库服务器崩溃或拒绝服务。这将导致数据库系统的服务不可用,从而影响系统的正常运行和用户的正常使用。
(3)通过表单输入用户名来查询特定用户信息,写出获得表格中所有用户信息的SQL语句。
SELECT * FROM user_data WHERE first_name = 'John' AND last_name = ' Smith' or '1'='1 ' ;
(4)如果想修改“Bob”用户的salary为$100,应该写怎样的SQL语句?
SELECT * FROM employees WHERE last_name = 'sadf' AND auth_tan = ' ';update employees set salary = 100 where first_name = ‘Bob’and last_name = ‘Brant';
(5)如果想破坏employees的可用性,应该写怎样的SQL语句?
SELECT * FROM user_data WHERE login_count =' '; drop table access_log;
(6)怎样预防和避免SQL 注入攻击。
严格输入验证:对用户输入的数据进行严格验证,确保其符合预期格式和范围。使用正则表达式或其他验证工具来检查输入数据的有效性。
输入过滤:过滤掉用户输入中的特殊字符和潜在的危险字符,如单引号、双引号、分号等。
预编译SQL语句:使用预编译的SQL语句和参数绑定技术,将用户输入作为参数传递给SQL语句,而不是直接拼接到SQL语句中。
存储过程:在可能的情况下,使用存储过程来执行数据库操作。
限制数据库用户权限:确保数据库用户只具有执行必要操作的最低权限。避免使用具有超级用户权限的数据库账户来运行应用程序。
应用程序与数据库分离:将应用程序与数据库服务器分离,通过中间层或API进行通信。
相关文章:
实验9 基于WebGoat平台的SQL注入攻击
实验9 基于WebGoat平台的SQL注入攻击 1.实验目的 熟悉WebGoat平台,在该平台上实现SQL注入攻击。 2.实验内容 (1)下载webgoat-server-8.2.2.jar。 (2)搭建java环境。 (3)运行webgoat。 …...
多光谱技术在华为手机上的应用发展历史
2018 年,华为 P20 系列首次搭载 5 通道色温传感器,可帮助手机在不同光照条件下保持画面色彩一致性。 2020 年,华为 P40 系列搭载 8 通道多光谱色温传感器(实际为 11 通道,当时只用 8 个通道检测可见光)&am…...
如何免费白嫖 Deepseek API 接口
今天我将教大家如何利用网络空间测绘搜索引擎「Fofa」来寻找已经部署并开放 Deepseek 接口的服务。以下是详细步骤: 1. 访问 Fofa 搜索引擎 首先,打开 Fofa 搜索引擎的网站:https://fofa.info 2. 搜索开放的 Deepseek 接口 在搜索框中输入…...
Java、Go、Rust、Node.js 的内存占比及优缺点分析
在选择编程语言进行项目开发时,内存占用是一个重要的考量因素。不同语言在内存管理、垃圾回收、并发模型等方面各有特点,影响着它们的内存使用情况。本文将对 Java、Go、Rust 和 Node.js 的内存占比进行对比,并分析它们的优缺点。 1. Java 的…...
SaaS+AI应用架构:业务场景、智能体、大模型、知识库、传统工具系统
SaaSAI应用架构:业务场景、智能体、大模型、知识库、传统工具系统 大家好,我是汤师爷~ 在SaaS与AI应用的演进过程中,合理的架构设计至关重要。本节将详细介绍其五个核心层次: 业务场景层:发现和确定业务场景智能体层…...
ios通过xib创建控件
之前写过ios动态创建控件及添加事件,纯手工代码写控件,虽然比较灵活,但是就是代码量比较多。这次我们通过xib来创建app下载列表项 AppView.xib。一个imageview,一个label,一个button构成 1.创建AppView.xib 2.再创建xib对应的mode࿰…...
【树莓派Pico设备驱动】-WS2812B全彩LED驱动(基于SPI)
WS2812B全彩LED驱动(基于SPI) 文章目录 WS2812B全彩LED驱动(基于SPI)1、WS2812介绍2、WS2812配置4、驱动实现1、WS2812介绍 WS2812/WS2812B LED 使用 24 位来表示绿色、红色和蓝色值。 WS2812采用单线通信的设计,通信协议为非归零编码,每个LED需要24个bit的数据,数据依…...
AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…...
2025届优秀创新大数据毕业设计
吊打导师的大数据毕业设计项目 985华南理工大学学长 大厂全栈,大数据开发工程师 专注定制化开发...
解决 ComfyUI-Impact-Pack 中缺少 UltralyticsDetectorProvider 节点的问题
解决 ComfyUI-Impact-Pack 中缺少 UltralyticsDetectorProvider 节点的问题 1. 安装ComfyUI-Impact-Pack 首先确保ComfyUI-Impact-Pack 已经下载 地址: https://github.com/ltdrdata/ComfyUI-Impact-Pack 2. 安装ComfyUI-Impact-Subpack 由于新版本的Impact Pack 不再提供这…...
SpringBoot中的Javaconfig
为什么要使用Javaconfig? 如果要声明的bean对象,来自于第三方jar包(不是自定义的),无法使用Component 及衍生注解来声明bean,因为第三方的jar一般不可写,需要使用注解Configuration和Bean注解来…...
【前端】几种常见的跨域解决方案代理的概念
几种常见的跨域解决方案&代理的概念 一、常见的跨域解决方案1. 服务端配置CORS(Cross-Origin Resource Sharing):2. Nginx代理3. Vue CLI配置代理:4 .uni-app在manifest.json中配置代理来解决:5. 使用WebSocket通讯…...
flutter isolate到底是啥
在 Flutter 中,Isolate 是一种实现多线程编程的机制,下面从概念、工作原理、使用场景、使用示例几个方面详细介绍: 概念 在 Dart 语言(Flutter 开发使用的编程语言)里,每个 Dart 程序至少运行在一个 Isol…...
Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程
系统版本:Windows 11 依赖环境:Anaconda3 运行软件:PyCharm 一.环境配置 通过Anaconda Prompt(anaconda)打开终端创建一个虚拟环境 conda create --name mmseg python3.93.激活虚拟环境 conda activate mmseg 4.安装pytorch和cuda tor…...
REACH报告是检测什么的?检测项目有哪些?检测多少项?费用是多少?
REACH报告是检测什么的?检测项目有哪些?检测多少项?费用是多少? REACH报告检测的主要是 在欧盟境内生产、销售或进口的化学品和产品中受限物质、授权物质或高度关注物质的含量 。 检测项目包括但不限于以下几项: 甲醛…...
基于java手机销售网站设计和实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
如何评估云原生GenAI应用开发中的安全风险(下)
以上就是如何评估云原生GenAI应用开发中的安全风险系列中的上篇内容,在本篇中我们介绍了在云原生AI应用开发中不同层级的风险,并了解了如何定义AI系统的风险。在本系列下篇中我们会继续探索我们为我们的云原生AI应用评估风险的背景和意义,并且…...
使用WebUI访问本地Deepseek(Ollama集成Open WebUI)
在《deepseek本地部署和使用(Linux虚拟机)》中,我们使用Ollama部署了Deepseek-r1,但是只能通过命令行方式交互,默认Ollama启动后,会启动一个监听到127.0.0.1,用以接收POST 请求,服务…...
Word成功接入DeepSeek详细步骤
原理 原理是利用Word的VBA宏,写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key,有一些免费的额度可以使用。大概就是这个公司提供token,我们使用这个公司的模型调用deepsee…...
Batch Normalization (BN) 和 Synchronized Batch Normalization (SyncBN) 的区别
Batch Normalization 和 Synchronized Batch Normalization 的区别 Batch Normalization (BN) 和 Synchronized Batch Normalization (SyncBN) 的区别1. BN(Batch Normalization)2. SyncBN(Synchronized Batch Normalization)3. 选…...
房价预测/矿藏勘探/自然灾害预测……AI助力地球科学革新,浙大/清华/Google Research等已发表重要成果
地球科学作为一个高度跨学科的领域,正在经历一场由 AI 引领的重大变革。回顾 2024 年,研究人员在智慧城市建设、房价预测、海洋生态建模、地面沉降预测、洪水预测、山体滑坡预测、矿物预测等方面取得了一系列突破性成果。这些研究不仅展现了 AI 在处理复…...
NO.13十六届蓝桥杯备战|条件操作符|三目操作符|逻辑操作符|!||||(C++)
条件操作符 条件操作符介绍 条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下: exp1 ? exp2 : exp3条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算, exp2 计算的结果是整个表达式的结果&am…...
Linux网络编程--Udp套接字+实战 (万字详解,超详细!!)
目录 套接字协议: 协议(protocol): 创建套接字(Create Socket): 绑定服务器地址 开始通信 Udp服务器设计--V1 Udp服务器设计--V2 引入进程池 待更新 套接字协议: 协议(protocol): 如果2个距离很远的人想要进行交流ÿ…...
vscode无法ssh连接远程机器解决方案
远程服务器配置问题 原因:远程服务器的 SSH 服务配置可能禁止了 TCP 端口转发功能,或者 VS Code Server 在远程服务器上崩溃。 解决办法 检查 SSH 服务配置:登录到远程服务器,打开 /etc/ssh/sshd_config 文件,确保以下…...
玩转工厂模式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 什么是工厂模式?工厂方法模式适合应用场景实现方式工厂方法模式优缺点什么是工厂模式? 工厂方法模式是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。…...
数据库视图的使用场景详细讲解
什么是数据库视图? 数据库视图是基于一个或多个数据库表的查询结果集,可以看作是一个虚拟表。视图本身不存储数据,数据仍然存储在基表中。视图通过查询动态生成数据,用户可以通过视图访问数据,而不必直接操作基表。 …...
开箱即用:一个易用的开源表单工具!
随着互联网的普及,表单应用场景越来越广泛,从网站注册、调查问卷到考试测评,无处不在。传统的表单制作方式需要一定的代码基础,对于不懂编程的小伙伴来说,无疑是一道门槛。 今天,给大家分享一款开源的表单…...
基于微信小程序的博物馆预约系统的设计与实现
hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…...
Svelte前端框架
Svelte 简介 Svelte 是一个现代的前端框架,用于构建高效、响应式的用户界面。与 React、Vue 和 Angular 等传统框架不同,Svelte 在构建时将组件编译为高效的纯 JavaScript 代码,而不是在浏览器中运行一个庞大的运行时库。这使得 Svelte 应用具…...
力扣-栈与队列-347 前k个高频元素
思路 利用优先队列进行排序,然后利用multiset对count进行排序,最后收集k个高频元素就行 代码 class Solution { public:vector<int> topKFrequent(vector<int>& nums, int k) {priority_queue<int> pq;for(int i 0; i < nu…...
