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

news2024/11/26 8:46:42

在这里插入图片描述

在虚拟机上用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.coloradmin.cn/o/1494094.html

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

相关文章

Python 开发图形界面程序

用 Python 语言开发图形界面的程序,有2种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

玩家至上:竞技游戏设计如何满足现代玩家的需求?

文章目录 一、现代玩家需求分析二、以玩家体验为核心的游戏设计三、个性化与定制化服务四、强化社交互动与社区建设五、持续更新与优化《游戏力:竞技游戏设计实战教程》亮点编辑推荐内容简介目录获取方式 随着科技的飞速发展和游戏产业的不断壮大,现代玩…

软件测试之Web自动化测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、自动化测试基本介绍 1、自动化测试概述: 什么…

Android布局优化之include、merge、ViewStub的使用,7年老Android一次坑爹的面试经历

前言 开发10年,老码农,曾经是爱奇艺架构 点击领取完整开源项目《安卓学习笔记总结最新移动架构视频大厂安卓面试真题项目实战源码讲义》 师,东芝集团高级工程师,三星架构师。5年之内频繁被辞退。内心拔凉拔凉的,在这五…

Android大厂高级面试题灵魂100问,带你彻底弄明白

“2020年技术没有成长,我今年一定要好好努力学习!” “在现在这个公司都工作了3年了,一毛钱工资都没有涨…” “年前真倒霉,老板嫌我工资高,被优化了,年后又遇到了疫情,现在都还没有找到合适的工…

141.乐理基础-男声女声音域、模唱、记谱与实际音高等若干问题说明

上一个内容:140.乐理基础-音程的转位-CSDN博客 上一个内容练习的答案:红色箭头指向的是转为,比如第一个只要写成c低g高都是正确的,不一定非要和图中一样 首先在 12.音域、1C到底是那一组的C 里面写了人声的音域,大致默…

最强照片AI无损放大工具

使用人工智能的能力来放大图像,同时为惊人的结果添加自然的细节。 使用深度学习技术,A.I.GigaPixEL可以放大图像并填满其他调整大小的产品所遗漏的细节。 下载地址:最强照片AI无损放大工具.zip

dolphinscheduler试用(一)(边用边修bug。。。。create tenant error)

(作者:陈玓玏) 前提:部署好了dolphinscheduler,部署篇见https://blog.csdn.net/weixin_39750084/article/details/136306890?spm1001.2014.3001.5501 官方文档见:https://dolphinscheduler.apache.org/…

MyBatis操作数据库(SQL注入)

本文主要来讲解6大标签&#xff0c;以便更好的MyBatis操作数据库&#xff01; <if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 前提需求&#xff1a; MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&…

【LeetCode】升级打怪之路 Day 14:二叉树的遍历

今日题目&#xff1a; 144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102. 二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节点指针117. …

Fiddler入门:下载、安装、配置、抓包、customize rules

一、fiddler下载安装 安装包下载链接&#xff1a;https://www.telerik.com/download/fiddler 随便选个用途&#xff0c;填写邮箱&#xff0c;地区选择China&#xff0c;勾选“I accept the Fiddler End User License Agreement”&#xff0c;点击“DownLoad for windows”&…

⭐每天一道leetcode:28.找出字符串中第一个匹配项的下标(简单;暴力解;KMP算法,有难度)

⭐今日份题目 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例1 输入&#xff1a;haystack &q…

3.6作业

作业要求&#xff1a;数据库操作的增、删、改 程序代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//定义数据库句柄指针sqlite3 * ppDb NULL;//打开数据库&#xff0c;如果数据库不存在&#xff0c;则创建数据库//将数据库句柄由参数…

移动开发:图像查看器

一、新建ImageViewer模块&#xff0c;添加p1-p9图片(注意mdpi后缀) 二、相关代码 1.MainActivity.java文件代码 package com.example.imageviewer;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.MotionEvent; import and…

Jacob使用教程--通过宏来寻找变量名

说明: 这里做个随比,参考资料请见前面的系列文章 问题展示: 对于一个操作,当我们不知道怎么利用jacob写代码时,而且网上也找不到,可以按照如下操作: 比如,我们要删除 word中的文本框 我们根本不知道文本框,这个变量叫什么,在Microsoft文档哪个父目录下面, 可以通过…

【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制

目录 1.先理清一下概念 2.锁 2.1.分类 2.2.表锁 2.3.行锁&#xff08;MVCC&#xff09; 2.4.间隙锁 2.5.行锁变表锁 2.6.强制锁行 1.先理清一下概念 所谓并发控制指的是在对数据库进行并发操作时如何保证数据的一致性和正确性。在数据库中与并发控制相关的概念有如下几…

测试遍历1e5,1e8数组耗时

1e8大概0.38秒&#xff0c;即380ms 1e5耗时1ms左右&#xff1a; 代码使用方式来自&#xff1a;clock - C Reference (cplusplus.com)

MicroPython ADX51x读取ID和ADC值

from machine import Pin, SoftSPI import timedef ID(agreement):#txbuf 需要将16进制转换为10进制rxbuf bytearray(3) # create a bufferspi SoftSPI(baudrate200000, polarity1, phase0, mosiPin(16), misoPin(4), sckPin(2))spi.init(baudrate125000) # set the bau…

【前端系列】vue

这里写目录标题 一、Vue简介1.1 主流前端框架/库简介 二、下载和安装Vue2.1 下载2.2 安装完成后&#xff0c;检查2.3创建全局安装目录和缓存日志目录2.4 为了下载包快速&#xff0c;改源为淘宝镜像2.5 查看npm配置修改是否成功 三、配置环境变量环境变量—用户变量—选中Path—…

(C语言)深入理解指针1基础

指针是C语言中的一个难点&#xff0c;但如果真正理解了指针&#xff0c;其实没有很难&#xff0c;本篇文章介绍了指针的基础知识&#xff0c;后面还会继续更行指针的内容。感谢支持。 目录 1. 内存和地址 1.1 内存 1.2 究竟该如何理解编址 2. 指针变量和地址 2.1 取地址操…