可能重复:
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);" ?
好吧,我知道我现在冒着一些回购的风险,这不是一个真正的编程问题,但我希望它足够有趣,不要被删除:)
感谢您的任何回答!