网络安全——SQL注入实验

一、实验目的要求:

二、实验设备与环境:

三、实验原理:

四、实验步骤:

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

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

七、实验截图:


一、实验目的要求:

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.hqwc.cn/news/277286.html

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

相关文章

【docker】docker入门与安装

Docker 一、入门 Docker的主要目标是:Build, Ship and Run Any App, Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。 Docker运行速度快的原因 Docker有比虚拟…

外包干了4个月,测试技术退步明显

先说一下自己的情况,本科生,20年通过校招进入杭州某软件公司,干了3年的功能测试,当然有半年是被封在了家里,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我…

腾讯科技Hi Tech Day暨2023数字开物大会:智能涌现将通往无数的未来

腾讯科技讯 12月14日,以“智能涌现 数开万物”为主题的腾讯科技Hi Tech Day暨2023数字开物大会在北京国家会议中心召开,腾讯科技邀请知名院士、知名经济学家、知名大学教授、研究院院长、产业大咖、互联网大厂高管、知名科技领域头部企业高管、产业数字化…

11、ble_mesh_provisioner 配网器

1、初始化流程,存储初始化,nvs擦除, 2、bluetooth_init();ble协议栈初始化 3、ble_mesh_get_dev_uuid(dev_uuid);//获取设备uuid加载到mac. 4、ble_mesh_init();//ble mesh协议栈初始化 4.1配置网络钥匙,索引,赋…

『番外篇三』Swift “乱弹”之带索引遍历异步序列(AsyncSequence)

概览 在 Swift 开发中,我们往往在遍历集合元素的同时希望获得元素对应的索引。在本课中,我们将向小伙伴们展示除 enumerated() 方法之外的几种实现思路。在玩转普通集合之后,我们将用“魔法棒”进一步搞定异步序列带索引遍历的实现。 在本篇博主中,您将学到以下内容: 概…

基于 Spring Boot + Vue3 打造一套完整的学生管理系统

基于 Spring Boot Vue3 打造一套完整的学生管理系统 项目技术栈 该项目所采用的技术栈:Spring Boot、Mybatis、Vue3、TypeScript Vite Ant Design Vue 项目演示 API文档 项目源码 项目源码传送门

LLM之RAG实战(三):LlamaIndex解锁自定义LLM关键步骤分块、索引、查询介绍

一、LLamaIndex介绍 LLamaIndex是一个由Jerry Liu创建的Python库,它可以使用语言模型对大型文档集进行高效的文本搜索和摘要。开发人员可以使用LLamaIndex快速添加私有/自定义数据,以增强现有的LLM。它不需要对大模型进行再训练,即可提供个性…

Windows10之wsl-Linux子系统安装JDK、Maven环境

Windows10之wsl-Linux子系统安装JDK、Maven环境 文章目录 1.环境2.安装2.1安装JDK2.1安装maven 3.配置setting.xml4.下载编译项目插件5.总结 1.环境 首先需要在windwos10上安装wsl的Linux子系统,我选择的是CentOs的操作系统的镜像(之前的文章中采用的是docker拉取一…

Linux篇:信号

一、信号的概念: ①进程必须识别能够处理信号,信号没有产生,也要具备处理信号的能力---信号的处理能力属于进程内置功能的一部分 ②进程即便是没有收到信号,也能知道哪些信号该怎么处理。 ③当进程真的受到了一个具体的信号的时候…

气象监测与流程分析大屏,更有效地保护人们的生命和财产安全!

气象变化与我们的生活息息相关,随着时代的变迁和科技的飞速发展,气象监测正逐渐迈入数字化的时代。传统的气象观测方式已经无法满足日益增长的需求,数字化的气象监测成为了必然的选择。通过数字化技术的应用,气象数据的采集、传输…

Tomcat从认识安装到详细使用

文章目录 一.什么是Tomact?二.Tomcat的安装1.下载安装包2.一键下载3.打开Tomcat进行测试4.解决Tomcat中文服务器乱码 三.Tomcat基本使用1.启动与关闭Tomcat2.Tomcat部署项目与浏览器访问项目 四.Tomcat操作中的常见问题1.启动Tomcat后,启动窗口一闪而过&#xff1f…

computed 和 watch 的奇妙世界:让数据驱动你的 Vue 应用(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…