查找缓冲区地址以创建 shell 代码
Find buffer address to create shell code
在我的程序中,我试图修改 EIP 以指向包含 shell 代码的缓冲区基地址
示例:
0xbffff5f3 是指向
的堆栈地址
code[80] = "\x90\x90\x90\x90\x90\x31\xc0\x31\xdb\x31\xc9\"
我创建了一个指针ret
并使用堆栈框架知识将其指向缓冲区的基址。
{
//Some more pointer arithmetic on ret
(*ret) = (int)code;
return ;
}
将eip修改为
eip 0xbffff5f3 0xbffff5f3
这工作得很好,我的 shell 代码执行了。但是 ret
是用缓冲区地址硬编码的。
但是,现在我希望我的 shell 代码包含预先知道的缓冲区基地址,这样一旦缓冲区溢出,EIP 就会指向它。
我怎样才能提前知道缓冲区的基地址?
[![缓冲区本身包含shell代码的地址][1]][1]
编辑:完善我的问题:
给定一个静态声明的数组代码[80],我怎样才能事先确定这个数组在堆栈上的基地址,以便我可以将这个基地址插入到我的 shell 代码中并插入适当的填充字节和 NOPS 来使EIP 指向 shell 代码 ?
我在网上看过很多例子,都演示了使用GDB在运行时计算缓冲区地址,但是如果我必须以编程方式导出shell代码地址,这是否可以实现.
没有直接的方法。您需要使用针对特定目标的技巧。
它们包括:
- 在没有地址-space随机化的相对静态程序中(或者如果模块编译时没有重定位,因此不能移动),你可以静态猜测(例如:https://reverseengineering.stackexchange.com/questions/8504/problem-finding-return-address-for-shellcode)。
- 暴力破解所有可能的值,指望迟早会命中(未命中将仅仅是 DoSes 或者可能与服务器日志中的错误一样小,如果它例如重新启动有故障的部分)
- 破坏代码中的其他实体,而不是 than/in 添加到 return 地址,使它们为您服务(示例:https://en.wikipedia.org/wiki/Return-to-libc_attack , corrupt
esp
)
- use an additional recon attack让服务器给你发送线索
在我的程序中,我试图修改 EIP 以指向包含 shell 代码的缓冲区基地址
示例:
0xbffff5f3 是指向
的堆栈地址
code[80] = "\x90\x90\x90\x90\x90\x31\xc0\x31\xdb\x31\xc9\"
我创建了一个指针ret
并使用堆栈框架知识将其指向缓冲区的基址。
{
//Some more pointer arithmetic on ret
(*ret) = (int)code;
return ;
}
将eip修改为
eip 0xbffff5f3 0xbffff5f3
这工作得很好,我的 shell 代码执行了。但是 ret
是用缓冲区地址硬编码的。
但是,现在我希望我的 shell 代码包含预先知道的缓冲区基地址,这样一旦缓冲区溢出,EIP 就会指向它。
我怎样才能提前知道缓冲区的基地址?
[![缓冲区本身包含shell代码的地址][1]][1]
编辑:完善我的问题: 给定一个静态声明的数组代码[80],我怎样才能事先确定这个数组在堆栈上的基地址,以便我可以将这个基地址插入到我的 shell 代码中并插入适当的填充字节和 NOPS 来使EIP 指向 shell 代码 ?
我在网上看过很多例子,都演示了使用GDB在运行时计算缓冲区地址,但是如果我必须以编程方式导出shell代码地址,这是否可以实现.
没有直接的方法。您需要使用针对特定目标的技巧。 它们包括:
- 在没有地址-space随机化的相对静态程序中(或者如果模块编译时没有重定位,因此不能移动),你可以静态猜测(例如:https://reverseengineering.stackexchange.com/questions/8504/problem-finding-return-address-for-shellcode)。
- 暴力破解所有可能的值,指望迟早会命中(未命中将仅仅是 DoSes 或者可能与服务器日志中的错误一样小,如果它例如重新启动有故障的部分)
- 破坏代码中的其他实体,而不是 than/in 添加到 return 地址,使它们为您服务(示例:https://en.wikipedia.org/wiki/Return-to-libc_attack , corrupt
esp
) - use an additional recon attack让服务器给你发送线索