我的老师给了我一些代码,我必须运行它并使其跳转到使用缓冲区溢出的管理部分。我无法修改源代码。有人可以解释我如何使用缓冲区溢出跳转到管理方法?我在Ubuntu 8.10上运行它,并使用旧版本的gcc进行编译,因此溢出将起作用。缓冲区溢出跳转到代码的一部分
0
A
回答
0
如果不能看到代码,在一般的层次上,您需要设计函数的输入,以覆盖堆栈上返回地址(或函数传递控制的另一个地址)。
猜测,代码具有固定长度的字符缓冲区,并将函数参数中的值复制到该缓冲区中,而不验证该长度未超过缓冲区的长度。
你需要记下你的应用程序的堆栈布局是什么样子(在调试器下运行它可能是最快的方法),找出你需要覆盖的地址,然后把一起用一个字符串覆盖这个你需要调用的管理函数的地址。
0
你总是可以得到它的asm输出(我现在忘了怎么...... brainfart)并查看你想要溢出的缓冲区在哪里被使用/读取并检查它的长度。接下来,您需要计算需要溢出的距离,以便使用JMP(管理代码的地址)替换下一条指令,或者将JMP地址更改为管理部分的地址。 0xE8是x86的跳转操作码,如果您需要它,因为您想用自己的指令覆盖该指令的二进制数据。
相关问题
- 1. 缓冲区溢出(VS)缓冲区溢出(VS)堆栈溢出
- 2. 为什么要跳转到esp(缓冲区溢出)?
- 3. 缓冲区溢出
- 4. 缓冲区溢出缓冲区长度
- 5. 的strtok - 缓冲区溢出
- 6. NSData转换堆缓冲区溢出
- 7. 缓冲区溢出不溢出
- 8. 缓冲区溢出与gets()
- 9. PaX和缓冲区溢出
- 10. JSP缓冲区溢出
- 11. 缓冲区溢出攻击
- 12. 缓冲区溢出为homeowrk
- 13. 过程缓冲区溢出
- 14. 试验缓冲区溢出
- 15. C++溢出缓冲区
- 16. vi,vim缓冲区溢出
- 17. 缓冲区溢出 - linux 64bit
- 18. 缓冲区溢出的shell代码是如何产生的
- 19. ***检测到缓冲区溢出***
- 20. 缓冲区溢出的C代码问题
- 21. 没有填充接收缓冲区的UDP缓冲区溢出?
- 22. 推回缓冲区溢出 - 但我的缓冲区还未满?
- 23. 使用缓冲区溢出来执行shell代码
- 24. 缓冲区溢出漏洞利用代码
- 25. 为什么缓冲区不会溢出这个代码?
- 26. JAVA中的缓冲区溢出
- 27. 在ATL COM DLL的缓冲区溢出
- 28. 关于缓冲区溢出的练习
- 29. 用的boost :: program_options缓冲区溢出
- 30. Java中的缓冲区溢出
对于http://security.stackexchange.com,这可能是一个更好的问题,因为您没有显示任何代码... –
我已添加代码 – functionalCode
[缓冲区溢出帮助(学术目的)]的可能重复] (http://stackoverflow.com/questions/7563668/buffer-overflow-help-academic-purpose) –