试图利用 C 程序中的缓冲区溢出

问题描述 投票:0回答:0

我正在尝试利用 C 程序(我已获得授权)。该程序具有三个函数:main、shell 和 print_name。程序中没有调用shell函数。 main 所做的只是调用 print_name,它使用 strcpy 将字符串输入(通过 argv 传递)复制到 15 位缓冲区。之后,缓冲区的内容被打印在命令行上。但是,该程序还包含一个字符指针(char *exec_string = "/bin/sh"),即“/bin/sh”字符串。 shell 函数仅包含 system(cmd),其中 cmd 是它接收的参数。利用包括发现将 char 指针变量作为参数传递给 shell 函数。

我通过gdb跑过程序,发现通过栈的第28位可以访问到eip寄存器。所以,我的策略是创建以下字符串: 00000000804A028aaaaaaaaaaaaa080486BD 前十五个元素是 exec_string 变量的地址。 shell 函数的地址从字符串的第 28 个元素开始。 但是,这没有用。 怎么了?我如何保证我想要的参数(exec_shell 变量)被正确传递到程序中未调用的函数中? 谢谢。

c buffer-overflow exploit
© www.soinside.com 2019 - 2024. All rights reserved.