首页 > 其他分享 >简单mips题目尝试

简单mips题目尝试

时间:2024-03-25 10:55:41浏览次数:32  
标签:尝试 题目 0x16 flag 反汇编 简单 mips data

0x01前言

mips是另一种不同的架构何指令集,推荐使用ghidra和ida插件进行反汇编,其中的知识我就不多赘述,因为我也一知半解Orz

0x02简单的ctf题目尝试

[UTCTF2020]babymips

  首先利用ghidra反汇编一下程序看看,按g可以跳转main函数看看

 发现具体逻辑将一段东西赋值给austak_68,然后输入对比,点进去22行函数看一看

 16行有一个简单的异或操作,尝试寻找一下param_1的数据,提取出来写一解密脚本就可以了。

data=[0x62, 0x6C, 0x7F, 0x76, 0x7A, 0x7B, 0x66, 0x73, 0x76, 0x50,
    0x52, 0x7D, 0x40, 0x54, 0x55, 0x79, 0x40, 0x49, 0x47, 0x4D,
    0x74, 0x19, 0x7B, 0x6A, 0x42, 0x0A, 0x4F, 0x52, 0x7D, 0x69,
    0x4F, 0x53, 0x0C, 0x64, 0x10, 0x0F, 0x1E, 0x4A, 0x67, 0x03,
    0x7C, 0x67, 0x02, 0x6A, 0x31, 0x67, 0x61, 0x37, 0x7A, 0x62,
    0x2C, 0x2C, 0x0F, 0x6E, 0x17, 0x00, 0x16, 0x0F, 0x16, 0x0A,
    0x6D, 0x62, 0x73, 0x25, 0x39, 0x76, 0x2E, 0x1C, 0x63, 0x78,
    0x2B, 0x74, 0x32, 0x16, 0x20, 0x22, 0x44, 0x19]
flag=''
for i in range(len(data)):
    flag+=chr(data[i]^(i+23))
print(flag)

[QCTF2018]Xman-babymips

用ida反汇编一下

 一个简单的异或

 一个简单的移位运算,能反汇编看起来都很简单,根据这个写一下脚本,一开始没用&防止溢出,后面才发现要用&防止溢出,

利用&通过对 a[i] 和这些位掩码进行按位与操作,可以提取出 a[i] 的特定位。例如,a[i] & 0x3f 提取出 a[i] 的最低的六位,a[i] & 0xc0 提取出 a[i] 的最高的两位。

data = b"Q|j{g"
flag = ''
for i in range(5):
    flag += chr((data[i] ^ (32 - i)))
print(flag) 

a=[0x52,0xfd,0x16,0xa4,0x89,0xbd,0x92,0x80,0x13,0x41,0x54,0xa0,0x8d,0x45,0x18,0x81,0xde,0xfc,0x95,0xf0,0x16,0x79,0x1a,0x15,0x5b,0x75,0x1f]
for i in range(0,len(a)):
    if i%2==0:
        a[i]= (a[i]&0x3f) << 2 | (a[i]&0xc0) >> 6
        flag+=chr(a[i]^0x20 - i-5)
    else:
        a[i]=(a[i]&0xfc) >> 2 | (a[i]&0x3 ) << 6
        flag+=chr(a[i]^(32-i-5))
print(flag)

 

axb_2019_mips

保护策略:

保护全关,小端序

ida7.5分析:

 有一个printf,尝试能否打印一些数据,同时还有一个read,因为没开nx,能否利用栈迁移来打shellcode。

新建终端后,执行32位小端序调试命令后不动

qemu-mipsel-static -L /usr/mipsel-linux-gnu -g 1234 ./test

再新建一个终端,轮流执行这几条指令就可以gdb了

gdb-multiarch
set architecture mips
set endian little #如果是大端则是要big
target remote localhost:1234

但是发现会遇到一个问题,'qemu-mipsel: Could not open '/lib/ld-uClibc.so.0': No such file or directory',搜索了一下发现我竟然没有这个库,实在是不太懂该怎么解决,那就只能说说思路是什么。

 通过0x4007e4这条指令,将距离v1有0x38地方的值付给v0从而控制a1就是read的第二个参数buf,所以我们通过溢出将返回地址修改为这里打栈迁移写shellcode就行,exp等我解决问题之后才能书写Orz

0x03参考链接

IOT安全入门学习--MIPS汇编基础 | ZIKH26's Blog

 《IoT从入门到入土》(1)--MIPS交叉编译环境搭建及其32位指令集 (yuque.com)

奇安信攻防社区-mips架构逆向那些事 (butian.net)

标签:尝试,题目,0x16,flag,反汇编,简单,mips,data
From: https://www.cnblogs.com/ModesL/p/18071537

相关文章

  • 从高级语言到汇编语言(MIPS)
    从高级语言到汇编语言(MIPS)C语言是如何转化为汇编语言的?这一步在电脑中是由汇编程序完成的,但是了解C语言到汇编语言的转换过程有利于我们更好的编写出性能更加优异的程序,因此下面我将逐步介绍从C到MIPS的核心思想和实现步骤。一、存储结构核心:在MIPS中,所有的操作数必须来......
  • Java语言程序设计实验题目:编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出
    题目描述编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出现的频率由高到低进行输出。例如:文档“HellowordHello”的统计结果为: Hello:2次 word:1次思路分析1.处理文档:先用nextLine()将文段输入,存储在字符串file,再调用split()方法将字符串分割成一个......
  • 剑指Offer题目笔记15(二叉搜索树)
    面试题52:问题:​给定一棵二叉搜索树,调整节点的指针使每个节点都没有左子节点。解决方案:​使用中序遍历,因为二叉搜索树是左节点的值小于等于根节点,根节点小于等于右节点的值,所以要是向使用每个节点都没有左子树,那么就需要先遍历左节点。源代码:/***Definitionfor......
  • 实现一个自动生成小学四则运算题目的命令行程序
    一.项目作者姓名:陈炜烽麦润泽学号:31220047763122004785Github项目地址:https://github.com/iFortheFuture/teamwork二.PSP表格##PersonalSoftwareProcessStagesPersonalSoftwareProcessStages预估时间(分钟)实际时间(分钟)Planning3030Estimate45......
  • PTA基础编程练习题目集 7—4 BCD解密
    题目描述:BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进......
  • C语言:洛谷题目分享(4)小书童--凯撒密码和笨小猴
    目录1.前言2.俩道题目1.小书童--凯撒密码1.题目背景2.题目描述3.输入格式4.输出格式5.题解2.笨小猴1.题目描述2.输入格式3.输出格式4.题解3.小结1.前言哈喽大家好啊,今天我继续为大家分享洛谷题单的俩道题目,请大家多多支持喔~2.俩道题目1.小书童--凯撒密码......
  • 机试重点题目-2018
    B:AIQP操作考察:vector容器的基本操作#include<iostream>#include<vector>#include<string>#include<algorithm>usingnamespacestd;vector<int>v;intn,m;intmain(){cin>>n;for(inti=0;i<n;i++){......
  • 数组 题目
    1.2034:【例5.1】反序输出【题目描述】输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。【输入】输入一行共有n个数,每个数之间用空格隔开。【输出】如题要求:一行,共有n个数,每个数之间用一个空格隔开。......
  • 数据库面试高频题目 - 深度解析 MySQL:探秘关系型数据库的核心技术(一)
       本文将深入探讨MySQL,这是关系型数据库中的核心技术,被广泛应用于数据存储和管理。透过高频面试题解析,我们将深入研究MySQL在数据建模、查询优化和事务处理中的作用。无论你是初学者还是渴望加深对关系型数据库技术的了解,本文都将为你提供实用的面试准备。一、innod......
  • 【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-系统服务-试卷
    2022年甘肃省职业院校技能大赛高职组网络系统管理竞赛系统服务模块试题目录一、竞赛介绍…1(一)环境登录…1(二)系统配置…1(三)竞赛环境…1二、竞赛注意事项…1三、竞赛结果文件的提交…2四、Linux项目任务描述…2(一)拓扑图…2(二)基本配置…3五、Linux项目任务清......