如何防止字符串读取C中的CTF标志

时间:2019-02-08 19:11:05

标签: c string buffer buffer-overflow ctf

我正在缓冲区溢出中创建一个简单的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都不可见。

1 个答案:

答案 0 :(得分:0)

通常,解决方案是分发运行在远程服务器上的二进制文件,并用CTF竞争对手的副本上的占位符替换实际密钥。

一种简单的方法是使用环境变量,因为CTF