从零开始的二进制漏洞挖掘(1)路由器漏洞挖掘(去实战版)

在这里插入图片描述

前言

路由器的洞大部分都是栈溢出,如果想要了解一些相关的知识,可以去看我的pwn和二进制安全虚拟机Protostar靶场系列文章,传送门:

https://blog.csdn.net/qq_45894840/category_12002228.html?spm=1001.2014.3001.5482

ghidra安装

Ghidra是一个由美国国家安全局(NSA)开发并公开发布的软件逆向工程(SRE)工具套件。它是一个完全开源的项目,旨在提供一个全面的工具集合,用于执行对编译代码(如二进制文件和执行文件)的逆向工程任务。Ghidra的发布旨在帮助安全研究人员分析恶意代码和漏洞,以及提高软件的安全性

https://github.com/NationalSecurityAgency/ghidra
apt install openjdk-17-jdk  #java环境安装

在这里插入图片描述

提取路由器固件

下载路由器官网更新的固件后,可以用binwalk工具对固件进行提取

在这里插入图片描述

解压文件夹后,可以看到一个.bin文件,这个就是路由器的固件

在这里插入图片描述

现在可以用binwalk提取路由器固件里的文件

binwalk -eM 路由器固件.bin

进入目录后,查看文件夹,会发现会有一个类似linux目录的文件夹

在这里插入图片描述

wwwroot_ro目录下是路由器网站的源代码

在这里插入图片描述

需要分析的固件在bin目录下,bin/httpd这个程序就是路由器主要运行的固件

在这里插入图片描述

使用ghidra对固件进行静态分析

ghidra的简单使用的文章

https://blog.csdn.net/qq_45894840/article/details/124556441

将httpd程序导入ghidra

在这里插入图片描述

在这里插入图片描述

双击程序进行分析

在这里插入图片描述

在这里插入图片描述

等右下角没有进度条了就说明Ghidra分析完成了

在这里插入图片描述

什么是缓冲区溢出

在程序运行时,系统会为程序在内存里生成一个固定空间,如果超过了这个空间,就会造成缓冲区溢出,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,甚至可以取得系统特权,进而进行各种非法操作。

在这里插入图片描述

strcpy

strcpy这个函数比较危险,因为它是直接把一个变量里的内容复制到另一个变量里的,它不会检查字符串的长度,很容易发生缓冲区溢出

按住ctrl+shift+e,呼出搜索界面,搜索strcpy函数

在这里插入图片描述

注意要勾选上图中的选项和点击搜索全部

在这里插入图片描述

这些就是程序调用了strcpy的地方,点击就能看到对应函数伪代码

在这里插入图片描述

把这些搜索到的调用strcpy函数的地方一个一个看,很容易发现栈溢出漏洞

这次演示的漏洞点在setSchedWifi函数中,找到setSchedWifi函数,点击它,查看源代码

在这里插入图片描述

在setSchedWifi函数中,__src变量会将用户交互的schedStartTime字符串后面的值作为字符串存入

在这里插入图片描述

之后程序会用strcpy函数将__src变量里的值传入__ptr+2指针指向的地址处

在这里插入图片描述

由于__src并未设置缓冲区,而strcpy函数不会检查字符串的长度,传入过长的字符串会造成缓冲区溢出,使程序崩溃退出

交叉定位,全局搜索调用setSchedWifi函数的地方,找到调用setSchedWifi函数的接口

在这里插入图片描述

在这里插入图片描述

在formDefineTendDa这个函数下面找到了setSchedWifi函数的路由

在这里插入图片描述

ctrl+f快速定位setSchedWifi函数

在这里插入图片描述

调用setSchedWifi函数的接口是openSchedWifi

payload:

import requests

url = "http://ip/goform/openSchedWifi"
data = {
    "schedStartTime":b'A'*1000
}
requests.post(url=url,data=data)

system

system这个函数会执行指定的命令,如果程序将我们的输入传入了这个函数里,那么有可能会造成rce

ctrl+shift+e搜索system

在这里插入图片描述

在这里插入图片描述

绕过

||id
|id

如果要输入空格,可以用以下命令代替空格:

${IFS}

路由器环境安装

什么是qemu

QEMU是一种流行的开源机器模拟与虚拟化软件。它的全称是Quick Emulator,意即“快速模拟器”。QEMU允许用户模拟完整的计算机系统,包括处理器和各种外设,这样可以在一个主机系统上运行一个或多个客户操作系统。它支持多种硬件架构,这意味着不仅可以模拟您的当前硬件架构,还可以模拟其他架构,以运行为那些架构专门设计的软件。

安装qemu

sudo apt install qemu-user-static
qemu-user-static -L . ./bin/httpd  #运行

在这里插入图片描述

找到漏洞并复现成功后,可以在这个网站提交漏洞,获取cve编号

https://vuldb.com/?id.add

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024全新手机软件下载应用排行、平台和最新发布网站,采用响应式织梦模板

这是一款简洁蓝色的手机软件下载应用排行、平台和最新发布网站,采用响应式织梦模板。 主要包括主页、APP列表页、APP详情介绍页、新闻资讯列表、新闻详情页、关于我们等模块页面。 地 址 : runruncode.com/php/19703.html 软件程序演示图:…

领域驱动设计(Domain-Driven Design DDD)——战略设计1

一、概述 随着系统的增长,它会越来越复杂,当我们无法通过分析对象来理解系统的时候,就需要掌握一些操纵和理解大模型的技术了。 最负雄心的企业欲实现一个涵盖所有业务、紧密集成的系统。因大型公司的业务模型巨大且复杂,很难把它…

Elasticsearch:如何创建搜索引擎

作者:Jessica Taylor 搜索引擎是生活中我们认为理所当然的事情之一。 每当我们寻找某些东西时,我们都会将一个单词或短语放入搜索引擎,就像魔术一样,它会为我们提供一个匹配结果列表。 现在可能感觉不那么神奇了,因为这…

【CSS】(标准流部分)易忘知识点汇总

一、元素 块元素 常见的块元素&#xff1a; <h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>行内元素 常见的行内元素&#xff1a; <a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins&…

卷积神经网络CNN

图像基础知识 图像是由像素点组成的&#xff0c;每个像素点的取值范围为 : [0, 255] 。像素值越接近于 0 &#xff0c;颜色越暗&#xff0c;接近于黑色&#xff1b;像素值越接 近于255 &#xff0c;颜色越亮&#xff0c;接近于白色。 在深度学习中&#xff0c;我们使用的图像…

图神经网络实战——图论基础

图神经网络实战——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前言 图论 (Graph theory) …

@Transactional--开启事物后换源报错

一、问题出现的场景 系统架构设计、每个企业一个企业库、通过数据源切在平台库、和企业库之间动态切换完成业务操作。 二、跨库事物失效的原因 1、SpringTransactional不支持跨数据源事物&#xff0c;Spring 事物控制是基于数据库链接进行的&#xff0c;当数据源切换后&#x…

Python算法题集_单词搜索

Python算法题集_单词搜索 题22&#xff1a;单词搜索1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【原始矩阵状态回溯】2) 改进版一【字典检测原始矩阵状态回溯】3) 改进版二【矩阵状态回溯】 4. 最优算法5. 相关资源 本文为Python算法题集之一…

【Datawhale组队学习:Sora原理与技术实战】Attention

Attention Attention 注意力&#xff0c;从两个不同的主体开始。 论文&#xff1a;https://arxiv.org/pdf/1703.03906.pdf seq2seq代码仓&#xff1a;https://github.com/google/seq2seq 计算方法&#xff1a; 加性Attention&#xff0c;如&#xff08;Bahdanau attention&…

electron-release-server部署electron自动更新服务器记录

目录 一、前言 环境 二、步骤 1、下载上传electron-release-server到服务器 2、宝塔新建node项目网站 3、安装依赖 ①npm install ②安装并配置postgres数据库 ③修改项目配置文件 ④启动项目 ⑤修改postgres的认证方式 ⑥Cannot find where you keep your Bower p…

Sqli-labs靶场第12关详解[Sqli-labs-less-12]

Sqli-labs-Less-12 #手工注入 post传参了 根据题目看&#xff0c;像一个登录页面&#xff0c;尝试使用布尔型盲注测试能否登录网站 1. Username输入a a" 测试是否会有报错&#xff0c;burp抓包 报错&#xff1a;syntax to use near "a"") and passw…

【风格迁移】pix2pixHD:高分辨率图像生成

pix2pixHD&#xff1a;高分辨率图像生成 提出背景问题1: 如何提高生成图像的照片级真实感和分辨率&#xff1f;问题2: 如何利用实例级别的对象语义信息进一步提高图像质量&#xff1f;问题3: 如何实现图像合成的多模态性&#xff0c;允许交互式对象编辑&#xff1f; pix2pixHD …

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中&#xff0c;我们会的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在我们应用程序的某个位置&#xff0c;对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢&#xff1f; 在Vue开发中&#xff0c;我们使用…

02、MongoDB -- MongoDB 的安全配置(创建用户、设置用户权限、启动安全控制、操作数据库命令演示、mongodb 的帮助系统介绍)

目录 MongoDB 的安全配置演示前准备&#xff1a;启动 mongodb 服务器 和 客户端 &#xff1a;1、启动单机模式的 mongodb 服务器2、启动 mongodb 的客户端 MongoDB 的安全配置启动演示用到的 mongodb 服务器 和 客户端启动单机模式的 mongodb 服务器&#xff1a;启动 mongodb 的…

光学遥感卫星分辨率的奥秘 !!

文章目录 前言 1、光学遥感卫星分辨率的多维视角 &#xff08;1&#xff09;空间分辨率 &#xff08;2&#xff09;光谱分辨率 &#xff08;3&#xff09;辐射分辨率 &#xff08;4&#xff09;时间分辨率 2、光学遥感分辨率的重要性 3、遥感分辨率的挑战与进步 4、未来展望 总…

《Spring Security 简易速速上手小册》第7章 REST API 与微服务安全(2024 最新版)

文章目录 7.1 保护 REST API7.1.1 基础知识详解7.1.2 重点案例&#xff1a;使用 JWT 进行身份验证和授权案例 Demo 7.1.3 拓展案例 1&#xff1a;API 密钥认证案例 Demo测试API密钥认证 7.1.4 拓展案例 2&#xff1a;使用 OAuth2 保护 API案例 Demo测试 OAuth2 保护的 API 7.2 …

【2024】利用python爬取csdn的博客用于迁移到hexo,hugo,wordpress...

前言 博主根据前两篇博客进行改进和升级 利用python爬取本站的所有博客链接-CSDN博客文章浏览阅读955次&#xff0c;点赞6次&#xff0c;收藏19次。定义一个json配置文件方便管理现在文件只有用户名称,后续可加配置读取用户名称&#xff0c;并且将其拼接成csdn个人博客链接ty…

OpenChat:性能高达105.7%,第一个超越ChatGPT的开源模型?

OpenChat&#xff1a;性能高达105.7%&#xff0c;第一个超越ChatGPT的开源模型&#xff1f; 前几天开源模型第一还是是Vicuna-33B、WizardLM&#xff0c;这不又换人了。对于开源模型的风起云涌&#xff0c;大家见怪不怪&#xff0c;不断更新的LLM榜单似乎也没那么吸引人了。 …

数学建模【因子分析】

一、因子分析简介 因子分析由斯皮尔曼在1904年首次提出&#xff0c;其在某种程度上可以被看成是主成分分析的推广和扩展。 因子分析法通过研究变量间的相关系数矩阵&#xff0c;把这些变量间错综复杂的关系归结成少数几个综合因子&#xff0c;由于归结出的因子个数少于原始变…

C/C++工程师面试题(数据库篇)

索引的优缺点 索引是一种支持快速查找特定行的数据结构&#xff0c;如果没有索引&#xff0c;就需要遍历整个表进行查找。用于提高数据检索的速度和效率。 好处&#xff1a; 提高检索速度&#xff1a; 索引可以加快数据的检索速度&#xff0c;因为它们允许数据库系统直接定位到…
最新文章