腾达路由器检测环境功能破解MISP基础

在这里插入图片描述

在虚拟机上用qemu运行腾达路由器的网站固件会遇到无法识别网络的问题,这篇主要是破解这个功能,使腾达路由器成功在虚拟机上运行,方便漏洞复现

本次用到的腾达路由器版本:

https://www.tenda.com.cn/download/detail-3683.html

image.png

下载完后,是一个压缩包,解压进入文件夹

image.png

解压后有两个文件,.bin文件就是路由器主要的固件,我们可以使用binwalk工具提取固件里的文件

binwalk -eM 固件名称.bin

提取后会在当前目录生成一个文件夹

image.png

进入文件夹,在squashfs-root目录下是路由器主要运行的一些东西

image.png

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

直接用qemu运行程序的话会卡住

image.png

什么是MISP

MIPS汇编语言是用于编写MIPS(Microprocessor without Interlocked Pipeline Stages)架构微处理器指令的低级语言,常见于路由器,MIPS架构是一种典型的精简指令集计算机(RISC)体系结构,最初由斯坦福大学的John Hennessy在1980年代初期设计,目的是为了实现高性能的处理器设计,通过使用简单的指令集来加速指令的执行速度。MIPS架构和汇编语言被广泛用于各种设备和应用中,包括嵌入式系统、路由器、微控制器以及视频游戏控制器等

MISP常见的一些寄存器

zero 常数零
$at	汇编器保留
$v0,$v1 子程序返回值
$a0-$a3	子程序参数
$t0-$t7	临时寄存器(调用者保存)
$s0-$s7	保存寄存器(被调用者保存)
$t8,$t9 临时寄存器(调用者保存)
$k0,$k1 操作系统保留
$gp	全局指针
$sp	栈指针
$fp	帧指针
$ra	返回地址

MISP常见指令

加法

addu rd,rs,rt	rd = rs + rt(溢出时不产生异常)
add rd,rs,rt	rd = rs + rt(溢出时产生异常)

减法

subu rd,rs,rt	d = rs-rt(溢出时不产生异常)
sub rd,rs,t	  d = rs-rt(溢出时产生异常)

乘法

mult rd,rt	hilo = rd * rt(有符号数)
multu rd,rt	hilo = rd * rt(无符号数)

除法

div rd,rt	  lo = rd / rt; hi = rd % rt(有符号数)
divu rd,rt	lo = rd / rt; hi = rd % rt(无符号数)

数据传输指令

lw rt,immediate(rs)	 rt = memory[rs + immediate]
sw rt,immediate(rs)	 memory[rs + immediate] = rt
lh rt,immediate(rs)	 rt = memory[rs + immediate]
lhu rt,immediate(rs) rt = memory[rs + immediate](零扩展)
sh rt,immediate(rs)	 memory[rs + immediate] = rt
lb rt,immediate(rs)	 rt = memory[rs + immediate]
lbu rt,immediate(rs) rt = memory[rs + immediate](零扩展)
sb rt,immediate(rs)	 memory[rs + immediate] = rt
lui rt,immediate	   rt = immediate * 2^16

无条件跳转指令

j address 	goto address * 4
jal address	$ra = PC + 4; goto address * 4
jr register	goto register

回到正题

腾达路由器检测环境功能破解

用ida打开这个程序,shift+f12查看这个程序的字符串

image.png

ctrl+f 定位welcone to字符串位置

image.png

双击,进入rodata段,交叉定位跳转到调用这个字符串的地址

image.png

image.png

程序在这里进入了死循环,代码的最后部分包含了一个条件跳转指令bnez(如果不等于零则跳转),这个跳转指令依赖于GetValue函数的返回值。如果GetValue返回非零值,程序将跳转到loc_43B828,在loc_43B828最后,又会跳回loc_43872c处,和while函数类似

image.png

用ghidra打开程序,定位到这个地方查看伪代码

image.png

可以看到,这里while函数会一直循环,我们在虚拟机上运行的,和路由器网络环境不一样,所以永恒为true

什么是NOP指令

NOP指令,全称"No Operation"指令,是一种在多种编程语言和汇编语言中存在的特殊指令。如其名所示,NOP指令的执行不会对程序的状态或机器的执行环境产生任何影响,也就是说,它不执行任何操作。在CPU执行NOP指令时,除了指令计数器(PC)会前进到下一条指令外,其他的寄存器值、内存状态和处理器的状态都不会改变

也就是说,我们可以用nop指令把while函数给覆盖掉,使程序不执行while函数

回到ida pro,我们可以把这两个跳转的地方用nop指令给覆盖掉

image.png

把鼠标放到第一个红框的地址处,点击一下,然后在ida pro上面的任务栏里选择

Edit->Patch program->change byte

将前4位都改成0,点击ok,就能换成nop指令了

image.png

image.png

继续更改第二个跳转指令,点击跳转地址的地方,然后在ida pro上面的任务栏里选择

Edit->Patch program->change byte

继续将前四个值改成0

image.png

image.png

点击ok,完成程序修改

image.png

现在导出程序,还是在ida pro上面的任务栏里选择

Edit->Patch program->Apply patches to input file

image.png
点击ok,现在程序已经被我们修改了,退出ida pro,将修改后的文件覆盖虚拟机里的源文件,然后给程序赋权

chmod 777 httpd

最后添加新的网卡,运行程序

brctl addbr br0
brctl addif br0 eth0
ifconfig br0 up
dhclient br0 

image.png

qemu-mipsel-static -L . ./bin/httpd

image.png
image.png

成功在虚拟机里访问路由器

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

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

相关文章

数据伪列

目录 数据伪列 rownum 查询 emp 表中的记录并且取得第一行数据 取得 emp 表的前 5 行记录 rowid 面试题:表中有许多完全重复的数据,要求将重复的数据删除掉(只剩最早的一个) Oracle从入门到总裁:https://blog.csdn.net/weixin…

Guava处理异常

guava由Google开发,它提供了大量的核心Java库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理和I/O操作等。 异常处理 传统的Java异常处理通常包括try-catch-finally块和throws关键字。 遇到FileNotFoundException或IOExce…

嵌入式蓝桥杯做题总结

第十二届省赛 按键代码 ——自认为比较巧妙,定时器3被设置为10ms进入一次中断,代替了HAL_Delay(10)的方法消抖; 运用状态机机思想实现检测多个按键检测——且分为两个状态,其中一个状态PB1和PB2的按键不…

stable-diffusion-webui-forge 介绍,安装,运行

一 stable-diffusion-webui-forge 介绍 stable-diffusion-webui-forge 的作用和stable-diffusion-webui一样,但性能上作了优化,说得上是是stable-diffusion-webui优化版,本人在使用stable-diffusion-webui时偶尔会有内存不够报错。本人的环境…

手写分布式配置中心(四)增加实时刷新功能(长轮询)

上一篇文章中实现了短轮询,不过短轮询的弊端也很明显,如果请求的频率较高,那么就会导致服务端压力大(并发高);如果请求的频率放低,那么客户端感知变更的及时性就会降低。所以我们来看另一种轮询…

Mysql面试总结

基础 1. 数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全 依赖是指不能存在仅依赖主关键字一部分的属性。第三范式&…

UDP通信发送和接收 || UDP实现全双工通信

recvfrom ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 功能: 从套接字中接收数据 参数: sockfd:套接字文件描述符 buf:存放数据空间首地址 …

基于springboot实现的幼儿园管理系统

一、系统架构 前端:html | layui | jquery | css 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 系统管理-用户管理 03. 系统管理-页面管理 04. 系统管理-角色管…

win11配置Mask DINO小白踩坑记录

win11配置Mask DINO踩坑记录 1 准备工作2 创建python环境和安装detectron22.1 安装前提2.2 安装流程2.2.1 cl.exe的错误2.2.2 SetuptoolsDeprecationWarning的错误 3 MaskDINO运行3.1 运行demo 前情提要:需要复现Mask DINO,但是实验室没有Linux的电脑&am…

keycloak18.0.0==本地源码启动

github下载源码, 版本18.0.0 java和maven的版本如下 E:\keycloak-18.0.0>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-…

【网站项目】308学生档案管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Spring Webflux 详解

目录 0、组件对比 1、WebFlux 1、引入 2、Reactor Core 1、HttpHandler、HttpServer 3、DispatcherHandler 1、请求处理流程 4、注解开发 1、目标方法传参 2.返回值写法 5、文件上传 6、错误处理 7、RequestContext 8、自定义Flux配置 9、Filter WebFlux&am…

Linux 之二:CentOS7 的 IP 常用命令和配置及 xshell 基本使用方法

1. 进入虚拟机 点击右键---进入终端--输入 ip adrr 或 ifconfig 查看ip地址 下面输入命令 ifconfig(注意:不是 ipconfig ) 或 ip addr 来查看当前系统 IP 查看到IP 后,比如:上面是 192.168.184.137 1.1 IP 常用命令…

LeetCode142题:环形链表II(python3)

代码思路: 双指针的第一次相遇: 设两指针 fast,slow 指向链表头部 head 。 令 fast 每轮走 2 步,slow 每轮走 1 步。 fast 指针走过链表末端,说明链表无环,此时直接返回 null。 如果链表存在环,…

web学习笔记(二十六)

目录 1.JS执行队列 1.1JS是单线程 1.2Web Worker 1.3同步和异步 1.4JS执行机制 2.location对象 2.1什么是location对象 2.2url包含的信息 2.3location对象属性 2.4location对象的方法 3.navigator对象和history对象 3.1navigator对象 3.2history对象 1.JS执行队…

初识JS

目录 javascript的作用: 浏览器如何执行JS代码: JS的三部分组成: ECMAScript: DOM: BOM: JS的三种书写导入方式: JS注释: JS的输入输出语句: JS变量,数据: 变量的使用: 声明变量&…

嵌入式学习第二十五天!(网络的概念)

网络: 可以用来:数据传输、数据共享 1. 网络协议模型: 1. OSI协议模型: 应用层实际收发的数据表示层发送的数据是否加密会话层是否建立会话连接传输层数据传输的方式(数据包,流式)网络层数据的…

Vue+SpringBoot打造医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

SpringCloud Alibaba 学习

一:SpringCloud Alibaba介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服 务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba&…

JavaScript实现点击鼠标弹钢琴的效果

思路&#xff1a; 图片设置宽900px&#xff0c;找到鼠标按下时的x坐标和img距离body的x坐标&#xff0c;两个值相减&#xff0c;然后除100取整&#xff0c;赋值给a&#xff0c;通过判断a的值来确定放出那个音乐。 完整代码&#xff1a; <!DOCTYPE html> <html lan…