【CTF Reverse】XCTF GFSJ0487 game Writeup(反编译+逆向工程)

2024-05-04 14:36

本文主要是介绍【CTF Reverse】XCTF GFSJ0487 game Writeup(反编译+逆向工程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

game

菜鸡最近迷上了玩游戏,但它总是赢不了,你可以帮他获胜吗


解法

放进 exeinfope 中分析。

拖入 IDA 中。shift + f12 查看字符串。ctrl + f 搜索 flag。

DATA XREF: sub_45E940+28↑o

Function 中搜索 sub_45E940。

flag 应该是在这里算出来的:

将这段 c 伪代码魔改为 c++ 程序:

#include <cstring>
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;int main() {int v0;		  // eaxint v1;		  // edxint v3;		  // [esp-4h] [ebp-168h]int i;		  // [esp+D0h] [ebp-94h]char v5[58];  // [esp+DCh] [ebp-88h] BYREF// char v5[3];		// [esp+DCh] [ebp-88h] BYREF// char v6[19];	// [esp+DFh] [ebp-85h] BYREF// char v7[32];	// [esp+F2h] [ebp-72h] BYREF// char v8[4];		// [esp+112h] [ebp-52h] BYREFchar v9[64];	// [esp+120h] [ebp-44h]int v10;		// [esp+160h] [ebp-4h]int savedregs;	// [esp+164h] [ebp+0h] BYREF// printf("done!!! the flag is ");v9[0] = 18;v9[1] = 64;v9[2] = 98;v9[3] = 5;v9[4] = 2;v9[5] = 4;v9[6] = 6;v9[7] = 3;v9[8] = 6;v9[9] = 48;v9[10] = 49;v9[11] = 65;v9[12] = 32;v9[13] = 12;v9[14] = 48;v9[15] = 65;v9[16] = 31;v9[17] = 78;v9[18] = 62;v9[19] = 32;v9[20] = 49;v9[21] = 32;v9[22] = 1;v9[23] = 57;v9[24] = 96;v9[25] = 3;v9[26] = 21;v9[27] = 9;v9[28] = 4;v9[29] = 62;v9[30] = 3;v9[31] = 5;v9[32] = 4;v9[33] = 1;v9[34] = 2;v9[35] = 3;v9[36] = 44;v9[37] = 65;v9[38] = 78;v9[39] = 32;v9[40] = 16;v9[41] = 97;v9[42] = 54;v9[43] = 16;v9[44] = 44;v9[45] = 52;v9[46] = 32;v9[47] = 64;v9[48] = 89;v9[49] = 45;v9[50] = 32;v9[51] = 65;v9[52] = 15;v9[53] = 34;v9[54] = 18;v9[55] = 16;v9[56] = 0;memcpy(v5, "{ ", 2);v5[2] = 18;memcpy(v5 + 3, "bwlA)|P}&|oJ1Sl^lT", 18);// qmemcpy(v6, "bwlA)|P}&|oJ1Sl^lT", 18);v5[3 + 18] = 6;// v6[18] = 6;memcpy(v5 + 3 + 19, "`S,yhn _uec{", 12);// qmemcpy(v7, "`S,yhn _uec{", 12);v5[3 + 19 + 12] = 127;v5[3 + 19 + 13] = 119;v5[3 + 19 + 14] = 96;v5[3 + 19 + 15] = 48;v5[3 + 19 + 16] = 107;v5[3 + 19 + 17] = 71;v5[3 + 19 + 18] = 92;v5[3 + 19 + 19] = 29;v5[3 + 19 + 20] = 81;v5[3 + 19 + 21] = 107;v5[3 + 19 + 22] = 90;v5[3 + 19 + 23] = 85;v5[3 + 19 + 24] = 64;v5[3 + 19 + 25] = 12;v5[3 + 19 + 26] = 43;v5[3 + 19 + 27] = 76;v5[3 + 19 + 28] = 86;v5[3 + 19 + 29] = 13;v5[3 + 19 + 30] = 114;v5[3 + 19 + 31] = 1;strcpy(v5 + 3 + 19 + 32, "u~");// strcpy(v8, "u~");string flag = "";for (i = 0; i < 56; ++i) {v5[i] ^= v9[i];v5[i] ^= 0x13u;flag += v5[i];}cout << flag << endl;//   v0 = sub_45A7BE("%s\n");// v3 = v1;//   sub_459AE9(&savedregs, &dword_45EC04, v0);//   return sub_458801((unsigned int)&savedregs ^ v10, v3);return 0;
}

输出:

zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

Flag

zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

声明

本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规

博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任

这篇关于【CTF Reverse】XCTF GFSJ0487 game Writeup(反编译+逆向工程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959426

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

二、Maven工程的创建--JavaSEJavaEE

1、idea创建Maven JavaSE工程:  2、idea创建Maven JavaEE工程:   (1)手动创建 (2)插件方式创建 在idea里安装插件JBLJavaToWeb; 选择需要生成的项目文件后,右击: 项目的webapp文件夹出现小蓝点,代表成功。

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出

三、Maven工程的构建

首先,创建和构建是两个概念。 构建是指将源代码、依赖库和资源文件等转换为可执行或可部署的应用程序的过程。 在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。 项目构建是软件开发过程中至关重要的一部分,它能够大大提高软件开发效率,使得开发人员更加专注于应用程序的开发和维护,而不必关心应用程序的构建细节。 同时,项目构建还能将多人写的代码聚合,并能够自动化项目的构建和部署,

我在高职教STM32——准备HAL库工程模板(1)

新学期开学在即,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。 一