我找到了一个泄漏其缓冲区地址的程序。我可以通过发送一个socket.get_once捕获它,但它是一个字符串格式。因此,当我将它传递给pack时,它不需要字符串值。如何将字符串格式的内存地址转换为可以放入shellcode的地址?
捕获的示例地址:0x7fffffffdfc0
使用string.pack('Q')会抛出一个不是整数的错误。所以我尝试使用循环将这些部分拆分成对,如下所示:
string.scan(/../)。reverse_each {| x | buf + = [x.to_i] .pack('S')}
我知道这可能是一个简单的解决方案,但由于某种原因,我无法绕过它。
答案 0 :(得分:0)
很容易......
buf + = [string.to_i(16)]。pack(' Q')