下载文件,发现无壳,IDA打开,shift+F12
发现疑似flag的字符串,跟进查看
得知flag的长度为13,空格查看框图,F5查看伪代码
发现v4是关键字符串,跟进
flag函数即为解题中心,即
即seed是关键值,点击跟进
即seed=0x2766,编写函数
#include <stdio.h>
#include <stdlib.h>
int main() {
int seed = 0x2766;
int m;
int v4;
srand(seed);
for ( m = 0; m < 13; ++m ) {
v4 = rand();
printf("%d", (unsigned int)(v4 % 8 + 1));
}
}
结果
即flag:NSSCTF{8384533872844}
但是在windows里的结果不对,在Linux里的才对
打开kali,创建文件,将代码复制过去
打开终端,输入:gcc '/home/kali/桌面/hello.c' -o hello.out,创建c语言输出文件
再输入:./hello.out ,运行代码,得到
即flag:NSSCTF{5353316611126}