题目地址:https://buuoj.cn/challenges#reverse2
解压后不是可执行文件——》丢进十六进制编辑器——》发现是一个二进制文件(查找flag无果,拖入ida试试看)
exeinfope查看无壳
查看伪代码:
v8 = __readfsqword(0x28u);
pid = fork();
if ( pid )
{
argv = (const char **)&stat_loc;
waitpid(pid, &stat_loc, 0);
}
else
{
for ( i = 0; i <= strlen(&flag); ++i )
{
if ( *(&flag + i) == 105 || *(&flag + i) == 114 ) // 把刚刚那一串flag里面的i和r替换成1(工具ascii)
*(&flag + i) = 49;
}
}
printf("input the flag:", argv);
__isoc99_scanf("%20s", &s2);
if ( !strcmp(&flag, &s2) )
result = puts("this is the right flag!");
else
result = puts("wrong flag!");
return result;
}
进入ida跟进伪代码:
把刚刚那一串flag里面的i和r替换成1
hacking_for_fun——》flag{hack1ng_fo1_fun}