babymips   XCTF 4th-QCTF-2018

mips,ida中想要反编译的化需要安装插件,这题并不复杂直接看mips汇编也没什么难度,这里我用了ghidra,直接可以查看反编译。

 1 void FUN_004009a8(void)
2
3 {
4 int iVar1;
5 int i;
6 byte input [36];
7
8 setbuf(stdout,(char *)0x0);
9 setbuf(stdin,(char *)0x0);
10 printf("Give me your flag:");
11 scanf("%32s",input);
12 i = 0;
13 while (i < 0x20) {
14 input[i] = input[i] ^ 0x20U - (char)i; //这里将输入进行异或(0x20-i)
15 i = i + 1;
16 }
17 iVar1 = strncmp((char *)input,_fdata,5); //前5字节输入转换后为 "Q|j{g"
18 if (iVar1 == 0) {
19   f_5-end_004007f0((char *)input); //转换后的结果进行下一步处理
20 }
21 else {
22   puts("Wrong");
23 }
24 return;
25 }

[5:]部分处理:

 1 void f_5-end_004007f0(char *op_str)
2
3 {
4 size_t lens;
5 int iVar1;
6 uint i;
7
8 i = 5;
9 while (lens = strlen(op_str), i < lens) {
10 if ((i & 1) == 0) { //偶数时
11 op_str[i] = (byte)((uint)((int)op_str[i] << 0x1a) >> 0x18) | op_str[i] >> 6;//高2位右移6位成为低2位,低6位左移2位成为高6位 相当于一字节循环左移2位
12 }
13 else {//奇数时
14 op_str[i] = op_str[i] >> 2 | (byte)((uint)((int)op_str[i] << 0x1e) >> 0x18);//高6位右移2位成为低6位,低2位左移6位成为高2位 相当于循环右移2位
15 }
16 i = i + 1;
17 }
18 iVar1 = strncmp(op_str + 5,PTR_ARRAY_00410d04,0x1b);
19 if (iVar1 == 0) {
20 puts("Right!");
21 }
22 else {
23 puts("Wrong!");
24 }
25 return;
26 }

wp:

 1 part1=b'Q|j{g'
2 part2='52 fd 16 a4 89 bd 92 80 13 41 54 a0 8d 45 18 81 de fc 95 f0 16 79 1a 15 5b 75 1f'
3 part2=list(bytes.fromhex(part2))
4 for i in range(5,len(part2)+5):
5 t = part2[i-5]
6 if i&1==0: #偶数时&1 为0
7 part2[i-5]=(t&0x3)<<6|(t&0xfc)>>2 #低2位左移6位,高6位右移2位 相当于循环右移2位
8 else:
9 part2[i-5]=(t&0x3f)<<2|(t&0xc0)>>6 #低6位左移2位,高2位右移6位 相当于循环左移2位
10
11 temp=list(part1)+part2
12 flag=''
13 for i in range(len(temp)):
14 flag+=chr(temp[i]^0x20 -i)
15 print(flag)

qctf{ReA11y_4_B@89_mlp5_4_XmAn_}

攻防世界 reverse babymips的更多相关文章

  1. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  2. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  3. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界 reverse Windows_Reverse2

    Windows_Reverse2   2019_DDCTF 查壳: 寻找oep-->dump-->iat修复   便可成功脱壳 int __cdecl main(int argc, con ...

  6. 攻防世界 reverse BabyXor

    BabyXor     2019_UNCTF 查壳 脱壳 dump 脱壳后 IDA静态分析 int main_0() { void *v0; // eax int v1; // ST5C_4 char ...

  7. 攻防世界 reverse parallel-comparator-200

    parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...

  8. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  9. 攻防世界 reverse easy_Maze

    easy_Maze 从题目可得知是简单的迷宫问题 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 ...

随机推荐

  1. TestNG学习-依赖

    背景: 有时,需要按特定顺序调用测试方法.例如: 在运行更多测试方法之前,请确保一定数量的测试方法已经完成并成功. 在希望将初始化的方法也用作测试方法的同时初始化测试项目. TestNG允许使用注解或 ...

  2. VSCode & outline & source code

    VSCode & outline & source code Dart 源码学习 outline 速览 dart-core List class instance-methods ht ...

  3. 10月份上线的NGK有什么不同之处?

    近日,有小道消息传出公链项目NGK即将在10月上线的消息.各大社区纷纷开始布局,市场中关于NGK项目的消息也变得更多了起来.仅是社区热度这一点,对比之下就已经优于很多项目,那么是否还有其他优势呢?让我 ...

  4. NGK数字增益平台的算力是什么?

    今年的币价回暖带来了新一轮的"信仰充值",部分投资者对比特币的兴趣从购买向更源头的算力转移.随着比特币开采数量逐渐减少,全网算力一直在增加,算力难度也是越来越高.同时在算力行业中竞 ...

  5. lock free(无锁并发)是什么

    一.非阻塞同步(Non-blocking Synchronization) 1. 无锁编程 / lock-free / 非阻塞同步 无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线 ...

  6. 为什么ElasticSearch比MySQL更适合全文索引

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤,对这个过程不了解的同学可以先行 ...

  7. 16_MySQL聚合函数的使用(重点,建议大家多动手操作)

    本节所涉及的SQL语句 -- 聚合函数 SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; -- SUM SELECT SUM(sal) FROM t_ ...

  8. 生成UUID的代码

    代码: String reqId = UUID.randomUUID().toString().replace("-", "");

  9. Socket实现简单聊天

    服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...

  10. IVMS-5000海康平台安装

    某学校系统因中勒索病毒重装监控系统平台 一   安装前准备 二  数据库安装 采用免安装版本安装,原先平台采用免安装版mysql 5.6.24 ,学校IT管理员将数据库文件完全复制,用虚拟机将数据库搭 ...