BUUCTF-RE-[FlareOn4]IgniteMe

本文介绍了使用IDA进行程序分析的过程,包括静态分析和动态调试。在静态分析中,作者关注了start和sub_4010F0、sub_401050等关键函数,发现程序无壳。动态调试部分,通过在特定位置设置断点,并手动启动调试服务解决IDA7.0的调试问题,揭示了变量v4的值为4。最终,通过提供的脚本解密得到了flag值,flag为'flag{R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查壳

发现程序是没有壳的
在这里插入图片描述

IDA (静动)分析

静态

在这里插入图片描述
然后 我们再F5 查看start的伪代码
在这里插入图片描述
然后我们进入 sub_4010F0 看看
读取某个字符串 然后传入全局变量当中
在这里插入图片描述
再进入sub_401050 看看
在这里插入图片描述那么我们现在未知v4的值 为了避免麻烦 其实我们可以直接在IDA动态调试该程序来获取v4的值

动调

我们首先在v4的位置下一个断点
在这里插入图片描述
在这里插入图片描述
然后选择这个 然后我们在Debugger->Stare process
发现会报在这里插入图片描述
这个错误,原因是因为IDA 7.0以后很难自己打开\dbgsrv\win32_remote.exe这个程序
我们手动打开这个文件,就行了

进入调试之后 我们随便输入下flag的值,可以看到V4的值为4在这里插入图片描述

get flag

脚本

#include<stdio.h>
#include<string.h>

char data[40] =
{
   13,  38,  73,  69,  42,  23, 120,  68,  43, 108,
   93,  94,  69,  18,  47,  23,  43,  68, 111, 110,
   86,   9,  95,  69,  71, 115,  38,  10,  13,  19,
   23,  72,  66,   1,  64,  77,  12,   2, 105,   0
};
int main(void)
{
   int i =0,j=0,k=0;
   char flag[40] = { 0 };
   char v4 = 4;
   for(i = 38;i >=0;i--)
   {
          j = v4^data[i];
                flag[i] = j;
                v4 = j;
   }
   printf("flag{%s}",flag);
    return 0;
}

flag 就为

flag{R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值