gpt4 book ai didi

c - printf在cygwin中执行.exe文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:59 24 4
gpt4 key购买 nike

我有一项任务要求我“破解”一段易受攻击的代码。片段:

int main(int argc, char **argv)
{

/*...*/

while(i < argc-1)
{
switch(argv[i][0]-48)
{
case 1:
SmashHeap(argc,argv);
break;
/*...*/
case 8:
PrintfVulnerability(argv[++i]);
break;
default:
printf("%s is not recognized by this program",argv[i++]);
/*...*/
}
i++;
}
return (1);
}

void PrintfVulnerability(char *F)
{
printf(F);
}

最后,我发现它是如此简单以至于我担心我的成绩会很差......我的解决方案:

  • 将可执行文件复制到主目录中...我使用 freecell.exe
  • $ ./VulnerableCode 8 `freecell.exe`

!!我在玩空当接龙。为什么会这样?

最佳答案

编辑:啊,我看到你的编辑了。不幸的是,这些反引号解释了很多,在 bash(cygwin 的默认 shell)中,反引号指示 shell 将字符串作为 shell 命令执行。所以你所有的命令都是告诉 shell 运行 freecell。只需传递未加引号的 freecell.exe,它实际上会将字符串传递给程序。

不过,您应该查看我在下一段中发布的链接,因为它可能会让您了解可以在案例 8 上运行的漏洞。

旧答案:我将不得不向对 Windows 体系结构有更好了解的人留下更深入的答案,因为我看不到您的命令行如何可能导致 freecell.exe 启动(顺便说一句,“freecell.exe”也打印到控制台?)。然而,在高层次上,案例 8 容易受到 Format string attacks 的攻击。 ,它可以利用 print 假设第一个参数是格式字符串这一事实,它指示{是否有参数,参数的类型}。根据您传递给它的缓冲区,它可以用于各种攻击。同样,我看不出在您的情况下它会如何启动流程。

关于c - printf在cygwin中执行.exe文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1486841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com