攻防re_Reversing-x64Elf-100
题目流程
读取输入的字符串s,再作为参数传入 sub_4006fd 函数中
判断条件成立,返回1,输入的flag不正确,**所以当 *(char *)(v3[i % 3] + 2 * (i / 3)) - (char )(i + a1) = 1 的时候成功
解题思路
通过对函数中判断条件的逆向分析得出以下脚本
注意:*(char *)() 中后面括号里是地址之,所以写脚本的时候对应位置应改为二维数组的形式: (v3[i % 3] [2 * (i / 3)])
解题脚本
#include <stdio.h>
int main()
{
int i;
char *v3[4] = {"Dufhbmf","pG`imos","ewUglpt"};
char flag [264] = {0};
for(i=0;i<=11;i++)
{
flag[i] = (v3[i % 3] [2 * (i / 3)]) - 1;
}
for(i=0;i<=11;i++)
{
printf("%c",flag[i]);
}
return 0;
}