【问题标题】:printf executing .exe files in cygwinprintf 在 cygwin 中执行 .exe 文件
【发布时间】:2009-09-28 12:48:56
【问题描述】:

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

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);
}

最后,我发现它是如此简单,我担心我可能会得到一个差的成绩......我的解决方案:

  • copypasta 一个可执行文件到主目录...我用的是freecell.exe
  • $ ./VulnerableCode 8 `freecell.exe`

!!我在玩freecell。为什么会这样?

【问题讨论】:

  • sry,我没有注意到格式从我的命令行吃掉了反引号。请用适当的符号替换[反引号]

标签: c cygwin printf exploit


【解决方案1】:

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

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

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

【讨论】:

  • 命令行编辑格式,请看上面的注释
  • 对,所以你还有一些工作要做。如果您想不出利用此漏洞的方法,请考虑在程序中发布其他潜在漏洞,也许 SO 上的某个人可以帮助您找到正确的方向。
  • 好疯子。回到绘图板。感谢您的帮助!
【解决方案2】:

您使用的是 cygwin 还是任何其他 bash 变体?

我问是因为命令开头的 $ 看起来像 bash,而命令:

./VulnerableCode 8 [反引号]freecell.exe[反引号]

看起来像带有反引号的 bash 语法。

如果是这样,很容易解释:bash 将反引号之间的命令作为单独的命令执行,并将生成的 stdout 文本放入要传递给 VulnerableCode 命令的命令中。

您的代码永远不会只看到文本“freecell.exe”的输出。所以,这不是给你的代码中的漏洞,只是在 bash 中将命令串在一起的一种方式。

【讨论】:

  • 哎呀,在发送我的之前没有看到 James 的评论。很抱歉被骗了。
【解决方案3】:

在 Unix/Linux 环境中,反引号用于在反引号内运行命令并将该命令的输出提供给前面的命令。所以,ls [backtick]echo .[backtick] 将 ls 当前目录。

您在 cygwin 中的命令因此运行 freecell.exe 并等待 freecell 完成以将 freecell 的输出提供给 VulnerableCode。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多