1、[FlareOn4] IgniteMe
2、[HDCTF2019] maze
1、[FlareOn4] IgniteMe
可见sub_401050是关键函数
求v4的函数。。我看不懂,可以试一下动调求v4,可以在call sub_401000处下断步入
也可以在后面开始异或的地方看
得到v4等于4,可以开始写脚本往回逆了
这个地方要注意,不是把简单地byte_403000里的数字按位异或,是每得到一位flag和byte_403000里对应的数异或可得下一位flag,还有最后要取逆
#include<iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
int main()
{
int byte_403000[40] = {
0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C,
0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 0x2B, 0x44, 0x6F, 0x6E,
0x56, 0x09, 0x5F, 0x45, 0x47, 0x73, 0x26, 0x0A, 0x0D, 0x13,
0x17, 0x48, 0x42, 0x01, 0x40, 0x4D, 0x0C, 0x02, 0x69, 0x00 };
int flag[40] = {
};
int j = 38;
int v4 = 4;
int temp = 0x69;
for (int i = 0; i <40; i++)
{
flag[i]=temp^ v4;
temp = flag[i];
v4 = byte_403000[j-1];
j--;
}
for (int i = 38; i >=0; i--)
{
printf("%c", flag[i]);
}
}
2、[HDCTF2019] maze
不能F5,因为那个红处的花指令,直接nop掉
依旧不能直接F5,还要选中main的部分(一直到retn指令),按P键创立一个function
正常了,逻辑简单就是一个常规的迷宫题,wsad上下左右
在string窗口或hex窗口拿到迷宫,shift+e提取
然后。。。走迷宫即可