长城杯-2021-院校组-Just_cmp-re

二木 王者

长城杯-2021-院校组-Just_cmp-re

拿到这道题,其实是很迷糊的,因为按理说,直接进行比较这种,见过的都是将strcmp在init那里进行重写,但是很奇怪的是这道题没有,我去init去寻找之后,并没有找到进行处理的函数。很奇怪的。

函数不多,找到了一个疑似是加密的函数

image-20230923233927442

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

image-20230923234221950

不排除我IDA出差。。。。

后来去看了wp才发现,果然,就是这里是加密

解密很简单,这道题就直接猜是将flag{*…},里面的 *进行操作,将这里面的数据提取出来加即可

image-20230923235213549

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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}

至于为什么没有用到

image-20230923235559230

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

 评论