【re】[NISACTF 2022]string --linux下的随机数

发布时间 2023-11-01 11:24:52作者: GGBomb

附件下载,查壳

发现是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}