c - 黑客如何利用数组或指针

标签 c security

我是一名毕业生,希望尽快找到工作,但我有一个关于代码安全性的问题。

在 Java 中,没有越界数组,也没有指针,这表明 Java 比 C 更安全。在 C 中,这些越界数组可能导致堆栈损坏或缓冲区溢出和悬空指针。在采访中,我可能会被问到“黑客如何利用这些优势?”

我该如何回答这个问题?

欢迎提供示例。

最佳答案

嗯,您可以具体讨论 Heartbleed(那里有大量文档)。

基本上,有一个可以通过网络进行的 API 调用,您的代码将请求通信保持事件状态,通常如下所示:

You: send me "potato", which is 6 chars.
Response: potato

但是,没有检查请求的文本和发送的文本的长度是否对齐,因此您可以执行以下操作:

You: send me "potato", which is 512 chars.
Response potato&&&&#8388325099#((#(#)%#(((#%)password:1234#(%()#%((#%#(#%)(#)(%)(##()JFJFEOIJF#)J(JF)(#J)(#J#)(J#))J#....

响应计算机将发送马铃薯,加上 506 字节的内容,本质上是该局部变量周围的堆栈,其中几乎可以包含任何内容,包括密码等。

这是一个足够好的例子吗?

关于c - 黑客如何利用数组或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708242/

相关文章:

php - 在 VPS 上 CHMOD 目录 777 安全吗?

c - 如何中断对 gdb 中特定全局变量的访问?

c - 为什么这不会让我扫描我的发现然后未知?

c - 格式字符串 '%g' 需要类型为 'double' 的参数,但可变参数 1 的类型为 'long'

java - 从 Java Webstart 启动嵌入式 Tomcat 时出现 AccessControlException

c# - 通过 C# 和 HttpWebRequest 抓取安全网站时出现 SSL/TLS 错误

c - 从文件中读取换行符分隔的项目

c - 从链表结构中检索值给出错误的值

javascript - AES-128-GCM 是否在 Node V6 上验证 IV?

android - 如何保护 Android 应用程序中的 key ?