使用 BOF 利用堆栈金丝雀开发程序

exploiting program with stack canary by using BOF

提问人:junia 提问时间:10/20/2023 更新时间:10/20/2023 访问量:13

问:

我已经开始学习信息安全,并尝试解决有关此主题的一些任务。我必须利用的程序包含堆栈金丝雀。这是一个简单的程序,询问密码 3 次,如果密码匹配,它将打印出隐藏的信息。程序永远不会中断,直到提出所有 3 次问题,只有在 3d 时间之后,它才会显示错误、SIGSEGV 或检测到 Stack Smashed。我不知道程序的代码,只知道二进制文件。该程序在 main 中使用 strcmp、printf、strlen、puts、stack_chk_fail 等函数,并为return_hidden_file函数使用 open、return_hidden_file、write、read、stack_chk_fail 等函数。我被告知这个程序不使用 rbp,在这种情况下我不需要使用它来利用。存在用于输入密码的缓冲区,它类似于缓冲区[10]和return_hidden_file[0x32]中的另一个缓冲区。 还有一个称为 upload_password 的函数。它有 fopen、upload_password + 61、puts、exit、fread、fclose。 我在 SO 中看到了有关此的其他主题,但没有帮助。

我希望使程序打印出隐藏的单词。首先,我认为我必须对程序进行 BOF,其值为整个缓冲区(假设它是 0x48)减去 8 个字节的金丝雀和负 8 个空字节。因为我认为这个概念是在第一次关于密码的问题中使用 0x48-8-8 进行 BOF,然后获取泄露的堆栈金丝雀地址并绕过该位置,然后为第二次问题输入更多值并在 3d 尝试时获取隐藏的单词。但这并没有说出来,许多其他事情也不起作用,包括我在互联网上看到的方法。所以我完全迷茫和困惑。我什么时候可以利用这个程序?当它第一次、第二次或第三次询问有关密码的问题时?我是否需要知道堆栈金丝雀的地址,如果没有,那么我该如何绕过它?我第一次提问时需要 BOF 吗?我是否需要在漏洞利用代码中使用hidden_file函数的返回地址?可能需要在堆内存中利用 BOF? 帮我做点什么:(

安全 内存泄漏缓冲区 溢出 漏洞 leakcanary

评论


答: 暂无答案