网络安全——SQL注入实验

news2024/11/15 8:37:21

一、实验目的要求:

二、实验设备与环境:

三、实验原理:

四、实验步骤:

五、实验现象、结果记录及整理:

六、分析讨论与思考题解答:   

七、实验截图:


一、实验目的要求:

1、掌握SQL注入的原理。

2、通过开源网站渗透平台DVWA实战,掌握常见的SQL注入方法。

3、具体内容:

1)学习配置开源网站渗透平台DVWA(Damn Vulnerable Web Application)。

2)学习常见的SQL语句:create、select、drop、union等。

3)学习相关SQL注入方法并在实验平台验证


二、实验设备与环境:

三、实验原理:

1SQL基础

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

标准的SQL命令有select、insert、update、delete、create和drop,其中,select语句是SQL的核心,用于查询数据库并检索你所指定条件的数据。select语句有五个主要的子句,from是唯一必须的子句。每一个子句都有大量的选择项、参数等。SELECT语句的格式为:

select column1[,column2]   

from table1[,table2]       (指定表)

[where “conditions”]     (条件)

[group by “column-list”]  (聚合函数)

[having “conditions]     (为组指定条件)

[order by “column-list”]  (顺序显示结果)

2SQL注入原理

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入的基本思想:

1)查找入口:常见入口主要有表单提交(GET、POST)、URL参数提交(GET)、HTTP请求头部可修改的值(Referer、User_Agent等);

2)判断SQL注入漏洞的类型(字符型、整型等);

3)确定SELECT语句的字段数;

4)查找数据库以及user表;

5)确定users表对应的字段名;

6)获取全部用户信息;

3DVWA平台

DVWA是一款基于PHP和mysql开发的web靶场练习平台,集成了常见的web漏洞如sql注入,xss,密码破解等常见漏洞。此平台可自定义安全等级,分别为低、中、高三个等级。此次实验运用的是低等级。这个等级是针对完全的安全脆弱和没有安全性可言的网站。

四、实验步骤:

(一)启动平台

1、启动服务:执行命令,启动Web相关服务,启动apache2服务和mysql服务。

"# service apache2 start"

"# service mysql start"

2、等级设置:访问地址:http://locallhost/dvwa,并登录(用户名:admin,密码:password);单击左侧"DVWA Security"标签,设置安全等级为"Low"并提交。

(二)查找漏洞

1、数字测试:单击“SQL Injection”标签,即SQL注入。攻击者在web表单或者页面请求的查询字符串中通过注入恶意的SQL命令,从而使数据库执行恶意的SQL语句。在“User ID”编辑框输入数字1,查看结果后,再输入2。可看出,输入的参数被传入Web后台;

2、字符测试:继续在编辑框输入内容,输入“User ID:1’”,发现SQL报错。其原因是,标准的SQL查询语句为"select firstname,surname from users where id = '1';",当再加入一个引号时,则导致语法错误,"select firstname,surname from users where id = '1'';"

3、得出结论:Web漏洞为id,漏洞类型为:字符型。

(三)执行SQL注入

1、猜测字段数:输入“1’ union select 1,2#”。union 是联和查询的一个关键字,这个有一个前提就是必须满足所有的列是相同的,所以在这前面必须要添加一些没有意义的列来作为填充。输出了First nameSurname。实际上后台执行的SQL语句为“select firstname,surname from users where id = 1 union select 1,2#’”;字符’#’恰好起到注释的作用。再输入“1’ union select 1,2,3#”,结果报错,提示SQL语句字段数不对应,可得出字段数是2

2、获取数据库名、用户名:输入“1’ union select database(),user()#”,联合查询以获取数据库信息。得出当前使用的数据库为:dvwa,当前的用户名:root@localhost

3、获取当前用户表:输入“-1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#”,结果输出表为guestbook表、users表。我们已获得数据库名称为dvwa,数据库表为users

4、获取用户表列名:“-1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#”。该数据表存储了mysql数据库中的所有列的列名。结果输出用户表user存在重要的两列:userpassword。根据这两列就可以轻松获取网站的用户信息。

5、获取全部用户信息:“-1' union select user,password from users#”。将表中的信息全部输出,获取的密码经过了MD5加密,可以在网站PMD5在线解密。

6、测试:以用户1337为例,解密后的密码为charley。选择“Brute Force”标签,即进行暴力破解。验证密码正确性。输入用户名和经过解密后的密码,单击“Login”按钮,成功登录,SQL注入成功。

五、实验现象、结果记录及整理:

1、在查找漏洞中,通过2次测试,得出漏洞为id、漏洞类型为字符型,但在实际运用中,需通过多次测试,才可找出;

2、在执行SQL注入中,先是反复猜测字段数、再获取数据库名、用户名、当前用户表、用户表列名,层层递进,最后得到全部用户信息。采用从外到内的方法逐一突破,并获取有用的数据。

六、分析讨论与思考题解答:    

1、实际场景中,SQL注入的基本步骤是什么?

1)注入点测试

2)查询字段数

3)判断回显位

4)查询数据库的基本信息

5)爆数据库名

6)爆数据库表名

7)爆字段名

2、渗透测试中常用的几个函数和表库名有哪些?

3、二阶SQL注入流程是什么? 


七、实验截图:

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

【DC-DC】世微 AP9166 降压恒压芯片 18V 2A同步降压转换器

600KHz,18V,2A同步降压转换器 概述 AP9166是一款完全集成的效率2A同步整流降压转换器。AP9166运行在宽输出电流上以高效率 负载范围。此设备提供两个操作模式、PWM控制和PFM模式切换控制,允许更宽范围的高效率 负载AP9166至少需要现成标准的…

亲测好用的国内AI绘画工具TOP榜,中文输入,新手友好!

“如果不想被AI工具替代,那就先成为用好工具的人。” 最近AI绘画也是大火,上次给大家整理了9款国内实用的AI工具,很多小伙伴就私信我能不能整理一下关于国内可用的AI绘画工具,因为现在最火的AI绘画工具Midjourney和Stable Diffus…

换内核ubuntu

grep menuentry /boot/grub/grub.cfg我要使用第三个(索引从0开始,所以是第二个) 可以使用vi编辑(很麻烦) i变为插入模型 esc变为普通模型 :x删除单个字符,dd删除一行,:wq保存并退出 更新文件…

ArkTS 任务统计页面

我们继续学习使用ArkTS实现一个任务进度的统计功能。 1.公共的组件、样式 class Task{static id: number 1// 任务名称name: string 任务${Task.id}// 任务状态: 是否完成finished: boolean false }// 统计的卡片样式 Styles function card(){.width(95%).padding(20).backg…

c#按照时间进行数据存储(不用数据库)

概要介绍 按照日期生成文件夹,按照时间生成文件名,存储字符串。 可以用于简单数据记录(如果数据存储考虑格式文本,保存为csv格式) 实现效果 调用方法 SaveText.saveStr("测试字符串"DateTime.Now.ToStrin…

LeetCode 2132. 用邮票贴满网格图:二维前缀和 + 二维差分

【LetMeFly】2132.用邮票贴满网格图:二维前缀和 二维差分 力扣题目链接:https://leetcode.cn/problems/stamping-the-grid/ 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据&…

关于git clone速度极慢的解决方法

!!!!前提条件:得有一个可靠且稳定的梯子,如果没有接下来的就不用看了 前言:我在写这篇文章前,也搜索过很多相关git clone速度很慢的解决方法,但是很多很麻烦&#xff0c…

系统规划与管理师和信息系统项目管理师哪个好考?

软考系统规划与管理师和信息系统项目管理师是软考中备受关注的两个证书。这两个证书的相关知识领域广泛,对于从事IT行业的人们来说,都具有相当的吸引力。那么,对于考生而言,究竟哪个证书更适合呢?接下来,我…

MQTT 介绍与学习 —— 筑梦之路

之前写过的相关文章: MQTT协议(转载)——筑梦之路_mqtt url-CSDN博客 k8s 部署mqtt —— 筑梦之路-CSDN博客 CentOS 7 搭建mqtt服务——筑梦之路_腾讯云宝塔搭 centos 7.9.2009 x86_64 建标准mqtt服务器-CSDN博客 mqtt简介 MQTT&#xff…

NV040D语音芯片应用于取暖桌:智能语音提高用户体验

科技与生活的结合,是科技发展的展示。天气的降温,取暖桌越来越取得用户的心,时至今日传统的取暖桌已经没有办法满足用户的需求,智能语音取暖桌给用户的生活带来了不一样的体验。 NV040D语音芯片是一款性能稳定的芯片,拥…

strtok()的用法及实现哦

1. 用法 1. 声明:char *strtok(char *str, const char *delim) str -- 要被分解成一组小字符串的字符串。第一次调用 strtok() 时,这个参数应该是你想要分割的字符串。随后的调用应该将此参数设置为NULL,以便继续从上次的位置分割。delim -- …

弹性搜索引擎Elasticsearch:本地部署与远程访问指南

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装…

前端常用去重的几种方式

文章目录 方式1: ES6新语法方式2: 遍历 利用filter方式3: 使用 new Map() for循环方式4: 利用 hasOwnProperty总结 在github 查看该文章 方式1: ES6新语法 过滤出网页中不重复的html标签 结合去重知识点考查 […new Set([…document.querySelectorAll(‘*’)].map(v>v.t…

JSON初学习

目录 1、JSON定义 2、与 JS 对象的关系 3、常用类型示例 4、JSON与XML比较 1、JSON定义 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧…

【AI美图】第01期效果图,AI人工智能无绘画,美图欣赏

人工智能被各大平台传递,我也来凑一下热闹,放一组基础图片展示 介绍一下模型来源Stability AI: Stability AI直接将模型开源,且方式之粗暴,几乎完全不对生成内容做任何审核或者过滤。目前发布的稳定版本仅包含部分关…

YOLOv8优化策略:UniRepLKNetBlock 助力检测 | UniRepLKNet,通用感知大内核卷积网络,2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学…

上海亚商投顾:沪指高开低走 电力、煤炭板块逆势走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开低走,深成指、创业板指盘初涨超1%,随后冲高回落集体翻绿。 国企改革…

Qt图形设计

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置//设置窗口标题this->setWindowTitle("王者荣耀");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\28033\\Pictures\\Saved Pictures\\pict…

学习使用echarts漏斗图的参数配置和应用场景

学习使用echarts漏斗图的参数配置和应用场景 前言什么是漏斗图漏斗图的特点及应用场景漏斗图的特点漏斗图常见的的应用场景: echarts中漏斗的常用属性echart漏斗代码美化漏斗图样式1、设置标题字体大小2、设置标签样式3、设置漏斗图为渐变颜色4、设置高亮效果5、设置…

java导出word使用模版与自定义联合出击解决复杂表格!

1. 看一下需要导出什么样子的表格 如图所示,这里的所有数据行都是动态的,需要根据查询出来的数据循环展示。 如果只是这样的话,使用freemarker应该都可以搞定,但是他一列中内容相同的单元格,需要合并。 这对于表格样式…