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