我有一项任务要求我'打破'一段易受攻击的代码。片段:printf在cygwin中执行.exe文件
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,我没有注意到格式化从我的命令行反引号。请在命令行上用适当的符号 – rusl 2009-09-28 13:29:26