当前位置: 首页 > news >正文

re题(53)BUUCTF-[ACTF新生赛2020]SoulLike

BUUCTF在线评测

用ida打开,找到main函数,很简单的逻辑,关键在于最后一个if判断条件里的sub_83A(v8)函数

__int64 __fastcall main(int a1, char **a2, char **a3)
{char v5; // [rsp+7h] [rbp-B9h]int i; // [rsp+8h] [rbp-B8h]int j; // [rsp+Ch] [rbp-B4h]int v8[14]; // [rsp+10h] [rbp-B0h] BYREFchar v9[110]; // [rsp+4Ah] [rbp-76h] BYREFunsigned __int64 v10; // [rsp+B8h] [rbp-8h]v10 = __readfsqword(0x28u);printf("input flag:");scanf("%s", &v9[6]);strcpy(v9, "actf{");v5 = 1;for ( i = 0; i <= 4; ++i ){if ( v9[i] != v9[i + 6] ){v5 = 0;goto LABEL_6;}}if ( !v5 )goto LABEL_16;
LABEL_6:for ( j = 0; j <= 11; ++j )v8[j] = v9[j + 11];if ( (unsigned __int8)sub_83A(v8) && v9[23] == 125 ){printf("That's true! flag is %s", &v9[6]);return 0LL;}else{
LABEL_16:printf("Try another time...");return 0LL;}
}

如果我们没动过ida的配置文件,会发现这个函数太大了,ida反编译不了,我们打开ida配置文件里的cfg\hexrays.cfg文件,找到红框这个位置,把64修改成大一点的值(我改的是10000)(我看不懂英文,用ai翻译的,把ida能反编译函数汇编代码的最大值改大一点就可以了)

 改完之后,重新打开ida,反编译后是这个样子

 

 这个函数就是把flag的值进行多次异或和加法的处理,加密后的值就是v3,我们只需要把加改成减,逆向输出就行,但是3000多行代码怎么办嘞?别着急,这就需要我们excel大人

把加密代码复制过来,选择替换选项

 

把++改成--,全部替换

在B1单元格填入1,选序列选项

 

终止值改成3012

 

再插入一行单元格(不插入的话第一行选不上),B1的位置填0,选择筛选选项,以B列降序排列

 

 左上角选中A2:A3012单元格,复制粘贴到ida,即可逆向输出

 

flag{b0Nf|Re_LiT!} 

相关文章:

  • fastapi+vue中的用户权限管理设计
  • 从零开始理解 C++ 后端编程中的分布式系统
  • word怎么删除空白页?word最后一页删不掉怎么办
  • 网络通信领域的基础或流行协议
  • 重载和覆写有什么区别?
  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-nas(十)
  • AVInputFormat 再分析
  • 1penl配置
  • 【LeetCode Hot100】二分查找篇
  • 【Go类库分享】mcp-go Go搭建MCP服务
  • 将Airtable导入NocoDB
  • Python functools.partial 函数深度解析与实战应用
  • 【C/C++】Linux的futex锁
  • 音视频开发技术总结报告
  • 小土堆pytorch数据加载概念以及实战
  • StandardCopyOption 还有哪些其他可用的常量?
  • 为什么要做异地监控组网?
  • 洛谷P6136 【模板】普通平衡树(数据加强版)
  • quantization-大模型权重量化简介
  • 【LLaMA-Factory实战】Web UI快速上手:可视化大模型微调全流程
  • 中国驻美大使谢锋:经贸关系不是零和游戏,滥施关税损人害己
  • 观察|印度购买“阵风”舰载机,为掌控印度洋加速升级海航装备
  • 重庆渝中警方:男子点燃摩托车欲寻衅滋事,被民警和群众合力制服
  • 苏迪曼杯八强战,中国队横扫马来西亚队晋级四强
  • 武汉大学新闻与传播学院已由“80后”副院长吴世文主持工作
  • 海警巡航时海豚围舰艇嬉戏,专家:证明海域生态环境持续向好