【re】[NISACTF 2022]string --linux下的随机数
附件下载,查壳
发现是ELF程序,64位,ida打开分析
flag函数点进去
前面一堆代码其实都不重要,直接看主要代码:
puts("The length of flag is 13");
srand(seed);
printf("NSSCTF{");
for ( m = 0; m < 13; ++m )
{
v4 = rand();
printf("%d", (unsigned int)(v4 % 8 + 1));
}
putchar(125);
return &v6[-v12];
}
这里seed点进去发现是0x2766,已经给了随机数,所有可以不用动态调试
然后flag应该就是13个随机数,现在主要问题就是得出这些随机数,因为这是个linux下的程序,和windows下的生成是不一样的,写好的代码需要在linux下编译
c代码如下:
#include<stdio.h>
#include<stdlib.h>
int main(){
int num=0x2766;
srand(num);
for(int i=0;i<13;i++){
unsigned int ch=rand();
printf("%d ",ch%8+1);
}
return 0;
}
然后再linux下,用gcc编译,gcc test.c -o flag
然后运行
故flag为flag{5353316611126}