当前位置: 代码迷 >> 综合 >> 《BUUCTF逆向题解》——[GXYCTF2019]luck_guy
  详细解决方案

《BUUCTF逆向题解》——[GXYCTF2019]luck_guy

热度:47   发布时间:2023-12-05 23:47:26.0

常规查壳

无壳 64位 ELF文件

用IDA64打开

迅速的找到flag处

看到一个time 函数和rand 函数 猜是用于产生随机数的

后面的switch语句中 只有case 1;case 4;case 5;有用

看来只用按正确的顺序运行flag才能出现

盲猜顺序是 4 5 1

在case 4:

 

发现s是long long 类型(int 64),但是根据我们的观察 s 应该为char类型

这里因该是IDA识别错误了

需要我们将其更改回字符型

但此时就回遇到大端和小端的问题

因此我们需要将字符逆序存放才是正确的

转换后  "icug`of\x7F"

主要难点了解后 开始写脚本

#include<iostream>
using namespace std;
int main()
{char f1[]="GXY{do_not_";char f2[]="icug`of\x7F";for ( int j = 0; j <= 7; ++j ){if ( j % 2 == 1 )f2[j] -= 2;else--f2[j];}puts(f1);puts(f2);return 0;
}

所以flag为

flag{do_not_hate_me}