长城杯-2021-院校组-Just_cmp-re
拿到这道题,其实是很迷糊的,因为按理说,直接进行比较这种,见过的都是将strcmp在init那里进行重写,但是很奇怪的是这道题没有,我去init去寻找之后,并没有找到进行处理的函数。很奇怪的。
函数不多,找到了一个疑似是加密的函数

但是,也很奇怪,按了交叉应用之后,发现没有函数调用它????(因为其他函数都不像加密,所以很大概率就认定这个是加密函数)

不排除我IDA出差。。。。
后来去看了wp才发现,果然,就是这里是加密
解密很简单,这道题就直接猜是将flag{*...},里面的 *进行操作,将这里面的数据提取出来加即可

#include <stdio.h>
int main()
{
unsigned char arr[38] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0A, 0x37, 0x0A, 0x08, 0x0A, 0x06, 0x06, 0x0B, 0x38,
0x07, 0x0A, 0x3B, 0x08, 0x38, 0x0E, 0x0F, 0x3B, 0x3A, 0x0A, 0x0B, 0x06, 0x09, 0x07, 0x3B, 0x37,
0x0D, 0x0F, 0x07, 0x38, 0x0F, 0x00};
for (int i = 0; i < 38; i++)
{
printf("%c", arr[i] + 0x2a);
}
return 0;
}
最后解出 flag{a14a424005b14e2b89ed45031ea791b9}
至于为什么没有用到

看到这里,想必,懂的都懂。显然没有hook成功.
