当前位置: 首页 > news >正文

基于DVWA-Brute Force(LowMedium)的渗透测试

Brute force主要是通过爆破达到渗透目的:

Low

 查看源代码:

<?phpif( isset( $_GET[ 'Login' ] ) ) {// Get username$user = $_GET[ 'username' ];// Get password$pass = $_GET[ 'password' ];$pass = md5( $pass );// Check the database$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successfulecho "<p>Welcome to the password protected area {$user}</p>";echo "<img src=\"{$avatar}\" />";}else {// Login failedecho "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>


以上代码的含义是:
这段 PHP 代码是一个处理登录请求的脚本,
if (isset($_GET['Login'])):判断是否通过 GET 方法传递了名为 Login 的参数,如果有,则执行后续的登录逻辑。
从 $_GET 中获取用户名 $user 和密码 $pass,并对密码使用 md5 进行哈希处理。
构建一个 SQL 查询语句 $query,从 users 表中查找用户名和密码匹配的记录。
使用 mysqli_query 执行查询,如果查询失败则输出错误信息并终止脚本。
如果查询结果存在且只有一行匹配,说明登录成功:
获取用户的头像信息 $avatar。
输出欢迎信息和显示头像。
如果查询结果不存在或匹配行数不为 1,则登录失败,输出错误提示。
最后使用 mysqli_close 关闭数据库连接。

接下来使用BP抓包:

 空白处右键选择:发送给intruder

测试器-标签-位置,选择右侧清除

 清除变量引用后,双击username跟password的变量值,并分别添加变量引用符号。

 攻击类型选择:

集束炸弹(clusterbomb),可以对多个选定参数,这样我们可以同时对用户名跟密码互相组合发动爆破。

(拓展:狙击手(Sniper):仅指定单个爆破参数,定点爆破;

攻城锤/冲击夯(Battering Ram):指定一个文件对多个位置参数实施爆破,所有参数位置都一样;

音叉/鱼叉(Pitchfork):加入两个变量值)

 选择“有效载荷-有效载荷集”,选择1,有效载荷类型:“简单清单”。用户名爆破用例随意输入

 “有效载荷-有效载荷集”,选择2,有效载荷类型:“简单清单”。密码爆破用例同样随意输入:

 点击右上角:发动攻击

我们发现,其中有一个长度比较异常(最长),尝试登录,

 登录成功,结论:用户名:admin,密码:password

 low通关。

Medium

调整靶场难度为:Medium,选择提交:

调整之后查看对应源代码:

<?phpif( isset( $_GET[ 'Login' ] ) ) {// Sanitise username input$user = $_GET[ 'username' ];$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitise password input$pass = $_GET[ 'password' ];$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass );// Check the database$query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row    = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successfulecho "<p>Welcome to the password protected area {$user}</p>";echo "<img src=\"{$avatar}\" />";}else {// Login failedsleep( 2 );echo "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>

代码含义:

首先,通过 isset($_GET['Login']) 判断是否接收到了登录请求。然后对用户名 $user 和密码 $pass 进行了一些处理和净化:

  • 使用 mysqli_real_escape_string 函数来处理可能存在的特殊字符,以防止 SQL 注入。
  • 对密码进行了 md5 哈希处理。

接着执行一个 SQL 查询从 users 表中查找匹配的用户和密码。如果查询成功并且返回的行数为 1,表示登录成功:

  • 获取用户的头像信息 $avatar 。
  • 输出欢迎信息和头像。

如果查询结果为空或者行数不为 1,表示登录失败:

  • 程序会暂停 2 秒。
  • 输出登录失败的提示信息。

最后,关闭了与数据库的连接。

Medium级别比上一个级别多了一个sleep(),即登录失败后会有两秒的静默延迟。但我们同样可以使用LOW级的爆破方式做测试,但是时间会长一点。(参考low方法)

相关文章:

基于DVWA-Brute Force(LowMedium)的渗透测试

Brute force主要是通过爆破达到渗透目的&#xff1a; Low 查看源代码&#xff1a; <?phpif( isset( $_GET[ Login ] ) ) {// Get username$user $_GET[ username ];// Get password$pass $_GET[ password ];$pass md5( $pass );// Check the database$query "SE…...

水库大坝安全预警系统的作用

“汛情就是命令&#xff0c;防汛就是责任”&#xff0c;为了防治和减轻洪涝带来的危害&#xff0c;需要一种以预警为先导的临灾位移监测系统--水库大坝安全预警系统&#xff0c;对可能会出现的灾害进行实时远程监控&#xff0c;尽可能做到隐患早发现、早决策、早治理&#xff0…...

容器化部署ES集群

文章目录 一、ElasticSearch基本概念1、索引(Index)2、文档(Document)3、分片和副本4、映射(Mapping) 二、容器部署ElasticSearch集群三、容器部署ElasticSearch伪集群 一、ElasticSearch基本概念 1、索引(Index) 在ElasticSearch中&#xff0c;索引是文档的集合&#xff0c;类…...

使用排名前三的华为解锁工具来绕过忘记的华为锁屏密码

如果您在未使用“设置”应用的情况下将华为手机恢复出厂设置&#xff0c;同时启用了出厂重置保护 (FRP) 安全功能&#xff0c;您的华为设备将卡在帐户验证界面。您可以使用帐户凭据轻松绕过此锁定。但是&#xff0c;假设您无法回忆起旧的帐户信息。在这种情况下&#xff0c;您应…...

战神之父和前暴雪总裁都很期待《黑神话》:太酷想玩

近日《战神》之父David Jaffe在油管上发布视频&#xff0c;分享了他对《黑神话&#xff1a;悟空》的看法。他表示自己一直很关注这款游戏&#xff0c;该作的最终预告画面让他惊讶。而战斗部分更是让他大呼&#xff1a;“OMG”。 David Jaffe表示&#xff1a;“我必须要购买《黑…...

用户体验的优化:观测云在用户行为分析中的应用

在数字化商业环境中&#xff0c;用户体验的质量直接影响到品牌形象和客户忠诚度。观测云平台&#xff0c;作为一款专业的数据监控和分析工具&#xff0c;为企业提供了一个全面的解决方案&#xff0c;以深入分析用户行为并优化用户体验。 观测云的核心优势在于其能够实时处理和…...

ModelScope 部署 Flux 模型

Flux 文生图模型&#xff0c;是 Black Forest Labs 最近发布的模型&#xff0c;图片生成清晰度很高&#xff0c;模型可以在 ModelScope 上进行下载&#xff0c;本文将在本地环境中部署 Flex。使用环境如下 2080 TI 22GUbuntu 22Amd R7 2700 / 128G 启动 Model Scope 容器 Mo…...

ArkTs基础语法-声明式UI-基本概念

声明式UI语法 基本概念声明式UI描述创建组件无参数有参数 配置属性配置事件 配置子组件 基本概念 装饰器&#xff1a;用于装饰类、结构、方法及变量&#xff0c;并赋予其特殊的含义。 例如&#xff1a; Entry 有该装饰器的自定义组件&#xff0c;可以在UIAbility中使用&#xf…...

Day26 线程学习

线程相关知识总结 在多线程编程中&#xff0c;线程的管理和控制是非常重要的部分。本文将对线程的创建、取消、资源回收、竞争及顺序等方面进行详细总结。 一、线程的基本操作 pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*…...

eNSP 华为三层交换机实现VLAN间通信

华为三层交换机实现VLAN间通信 三层交换机&#xff1a; <Huawei>sys [Huawei]sys SW-3 [SW-3]vlan batch 10 20 [SW-3]int vlan 10 [SW-3-Vlanif10]ip address 192.168.10.254 24 [SW-3-Vlanif10]int vlan 20 [SW-3-Vlanif20]ip add 192.168.20.254 24 [SW-3-Vlanif20]in…...

【多模态大模型】LLaMA in arXiv 2023

一、引言 论文&#xff1a; LLaMA: Open and Efficient Foundation Language Models 作者&#xff1a; Meta AI 代码&#xff1a; LLaMA 特点&#xff1a; 该方法在Transformer的基础上增加了Pre-normalization (RMSNorm)、SwiGLU activation function (SwiGLU)、Rotary Embed…...

(转)java中restful接口和普通接口的区别

RESTful接口是一种遵循REST(Representational State Transfer)架构风格的网络接口&#xff0c;设计上更倾向于资源的表述&#xff0c;通过HTTP方法&#xff08;如GET、POST、PUT、DELETE&#xff09;直接操作资源&#xff0c;使得接口更简洁、易于理解和维护。 与普通接口相比…...

灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)

灵办AI就是您所需的最佳助手&#xff01;我们为您带来了一款多功能AI工具&#xff0c;不仅能为您提供精准翻译&#xff0c;还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI&#xff0c;真正让工作和学习变得轻松高效&#xff01; 推荐使…...

VulnHub:BlueMoon

准备工作 靶机下载地址&#xff0c;下载完成后使用virtualbox打开虚拟机&#xff0c;网络设置修改为桥接。 信息收集 主机发现 攻击机ip&#xff1a;192.168.31.218&#xff0c;nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 目标靶机ip为&#xff1a;192…...

处理filter里抛出的异常

Filter 的异常是在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter()这里扔出来的。Filter是tomcat负责调用执行的&#xff0c;所以会比 servlet&#xff08;尤其是SpringMVC 的dispatcherServlet &#xff09;先执行&#xff0c;所以 Filter 里的错误&…...

IndexedDB深度解析:JavaScript的客户端数据库

IndexedDB是一个在用户浏览器中运行的低等级API&#xff0c;用于存储大量结构化数据。作为NoSQL数据库&#xff0c;IndexedDB为Web应用程序提供了丰富的数据存储能力&#xff0c;支持键值对存储、索引、事务和复杂查询等功能。本文将详细介绍IndexedDB的基本概念、工作原理、使…...

C语言中的函数指针和返回值为数组的函数指针对比

函数指针 //定义一个函数指针&#xff0c;函数的参数是int型&#xff0c;返回值为int typedef int &#xff08;*func)(int);//定义一个函数指针&#xff0c;函数的参数是int*型&#xff0c;返回值为int* typedef int* (*func)(int *);定义一个返回值为数组指针的函数 //定义…...

根据字符串的长度和字符值的大小来对字符串切片进行排序

在 Go 语言中&#xff0c;根据字符串的长度和字符值的大小来对字符串切片进行排序。示例如下: package mainimport ("fmt""sort" )// 自定义类型&#xff0c;以实现排序接口 type byLengthAndValue []string// 实现 sort.Interface 的 Len 方法 func (s b…...

RabbitMQ 的工作原理

下面是rabbitmq 的工作原理图解 1、客户端连接到消息队列服务器&#xff0c;打开一个channel。 2、客户端声明一个exchange&#xff0c;并设置相关属性。 3、客户端声明一个queue&#xff0c;并设置相关属性。 4、客户端使用routing key&#xff0c; 在exchange和queue 之间…...

WPF 资源、引用命名空间格式、FrameworkElement、Binding、数据绑定

资源 对象级别独立文件 静态资源使用(StaticResource)指的是在程序载入内存时对资源的一次性使用&#xff0c;之后就不再去访问这个资源了。 动态资源使用&#xff08;DynamicResource&#xff09;使用指的是在程序运行过程中仍然会去访问资源。 显然&#xff0c;如果你确定…...

Wan2.2-I2V-A14B实战:基于LSTM的时序文本生成动态故事视频

Wan2.2-I2V-A14B实战&#xff1a;基于LSTM的时序文本生成动态故事视频 1. 场景与需求分析 在影视制作和互动叙事领域&#xff0c;如何将文字剧本快速转化为视觉预览一直是个耗时费力的过程。传统方法需要美术团队手工绘制分镜或使用基础动画工具&#xff0c;不仅成本高昂&…...

技术速递|底层机制:GitHub Agentic Workflows 的安全架构

作者&#xff1a;Landon Cox & Jiaxiao Zhou排版&#xff1a;Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...

CVPR2023新作DeSTSeg实战:用‘去噪学生’和‘分割网络’搞定工业缺陷检测

DeSTSeg工业缺陷检测实战&#xff1a;从顶会论文到产线落地的全链路指南 工业质检领域正经历一场静悄悄的革命——传统规则算法逐渐被基于深度学习的异常检测模型取代&#xff0c;但产线上随机出现的油渍、反光、机械划痕仍是算法工程师的噩梦。去年CVPR最佳论文提名作品DeSTSe…...

从零开始掌握KLayout版图设计:5个步骤打造专业集成电路设计流程

从零开始掌握KLayout版图设计&#xff1a;5个步骤打造专业集成电路设计流程 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout KLayout版图设计工具是开源EDA领域的明星产品&#xff0c;为集成电路设计工程师提供了一…...

GDAL:Windows环境下的高效安装与基础配置指南

1. Windows环境下GDAL安装全攻略 第一次接触GDAL时&#xff0c;我也被官网上密密麻麻的下载选项搞得头晕眼花。作为地理空间数据处理领域的"瑞士军刀"&#xff0c;GDAL确实功能强大&#xff0c;但在Windows平台上的安装过程却让不少新手望而却步。别担心&#xff0c;…...

OpenClaw跨平台控制:ollama-QwQ-32B同步操作多台设备的配置

OpenClaw跨平台控制&#xff1a;ollama-QwQ-32B同步操作多台设备的配置 1. 为什么需要跨设备自动化控制 上个月我家里添置了三台不同用途的设备&#xff1a;一台用于媒体处理的Mac mini、一台跑深度学习模型的Linux服务器&#xff0c;还有一台Windows主机专门处理文档。每次需…...

GuwenBERT:重构古文智能理解的3个技术维度

GuwenBERT&#xff1a;重构古文智能理解的3个技术维度 【免费下载链接】guwenbert GuwenBERT: 古文预训练语言模型&#xff08;古文BERT&#xff09; A Pre-trained Language Model for Classical Chinese (Literary Chinese) 项目地址: https://gitcode.com/gh_mirrors/gu/g…...

自动化数据标注:OpenClaw+Qwen3.5-9B加速AI模型训练

自动化数据标注&#xff1a;OpenClawQwen3.5-9B加速AI模型训练 1. 数据标注的痛点与自动化机遇 作为一名长期奋战在机器学习一线的开发者&#xff0c;我深知数据标注环节的折磨。去年参与一个图像分类项目时&#xff0c;团队花费了整整三周时间手工标注5万张图片&#xff0c;…...

Claude Code进阶实战:构建MCP驱动的多Agent协同开发流水线

1. 理解MCP驱动的多Agent协同开发 在传统软件开发中&#xff0c;一个工程师往往需要同时承担需求分析、UI设计、编码实现和测试验证等多个角色。这种"全栈式"工作模式虽然灵活&#xff0c;但随着项目复杂度提升&#xff0c;很容易出现专业深度不足、效率下降的问题。…...

Crazyflie自主飞行避坑指南:从安装cflib到成功运行脚本的全流程记录

Crazyflie自主飞行避坑实战&#xff1a;从零搭建到脚本控制的完整解决方案 第一次拿到Crazyflie套件时&#xff0c;那种兴奋感很快被一连串报错信息冲淡——Python路径不对、cflib安装失败、Crazyradio连接被占用、脚本运行无响应...如果你也经历过这种从期待到挫败的过程&…...