1

可能重复:
printf 中的格式字符串攻击

所以伙计们,这不是作业,我在 IT 营,老师给了我们这个代码:

#include <stdio.h>
int main()
{
    char s[200],s2[100];
    int a=123;
    int b=&a;
    puts("camp login:");
    scanf("%100s",&s);
    puts("somedata:");
    scanf("%50s",s2);
    printf(s2);

    if (a==31337)
        func(s);
}

并告诉我们在不更改代码的情况下执行 func(s)。只需编译、运行、输入一些数据。实际上,这是通过连接到 SSH 服务器来完成的,该服务器会自动启动程序,并在执行完成后断开用户连接。

我不确定是否

    puts("camp login:");
    scanf("%100s",&s);

真的很重要,实际上他们是在询问我们的系统登录,大概是要知道谁完成了任务。我发现了什么:

int b=&a; //Ultra-weird
scanf("%50s",s2); //Shouldn't it be "scanf("%50s",&s2);" ?

好吧,我知道我现在冒着一些回购的风险,这不是一个真正的编程问题,但我希望它足够有趣,不要被删除:)

感谢您的任何回答!

4

0 回答 0