使用工具
Exeinfo pe IDA.
先用Exeinfo pe查看文件的壳;
发现它是有壳的并且题中也给出了伪代码;
发现有几处判断逻辑,满足其输 入要求即可获得 flag。
首先第一个参数 unsigned int first = atoi(argv[1]);可以看出如果不等于 0xcafe 则退出程序,转成十进制得到第一个参数为 51966。
然后看第二个参数 unsigned int second = atoi(argv[2]); 看到模运算不等于 8,第一个想到的就是 25,所以第二个参数为 25。
最后第三个参数是一个字符串比较,所以第三个参数为 h4cky0u。
那么使用 python 计算 unsigned int hash = first * 31337 + (second % 17) * 11 + strlen(argv[3]) - 1615810207; first = 0xcafe second = 25 strlen(argv) = 7 hash = first * 31337 + (second % 17) * 11 + 7 – 1615810207 print(hex(hash);hash=12648430 ;
进行 16 进制转换,可得到输出的 hash 值为 c0ffee,即 flag 为 c0ffee。