我有一项任务要求我“破解”一段易受攻击的代码。片段:
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`
噗!!我在玩freecell。为什么这行得通?