我正在缓冲区溢出中创建一个简单的CTF,下面是示例代码:
#include <stdio.h>
void secretFunction()
{
printf("this is your flag!\n");
}
void echo()
{
char buffer[20];
printf("Enter some text:\n");
printf("%s", buffer);
printf("You entered: %s\n", buffer);
}
int main()
{
echo();
return 0;
}
编译:{{1}}
但是,如果我们执行gcc vuln.c -o vuln -fno-stack-protector -m32
,则它会直接显示实际标志,而当用户在二进制文件上键入字符串时,无论如何我的strings vuln
都不可见。
答案 0 :(得分:0)
通常,解决方案是分发运行在远程服务器上的二进制文件,并用CTF竞争对手的副本上的占位符替换实际密钥。
一种简单的方法是使用环境变量,因为CTF