c

时间:2016-11-12 22:27:18

标签: c security pointers

我正在阅读this article

它是关于攻击者如何产生内存错误(悬空指针和内存指针)导致内存损坏和可能对程序/系统的攻击。<​​/ p>

正在描述不同的方法,以及如何使程序更安全,并防止这些攻击。

但是我很难理解某些事情。我以为我对C有很好的了解(指针,悬空指针,内存分配,数据封装,以及更多的东西),但阅读那篇文章让我质疑我对C的了解。我所拥有的那些C源代码和阅读我已经完成没有指出那些漏洞。

攻击者如何控制我的程序指针?我读到它与悬空指针或指针内存不足或双重释放有关,但是怎么样?那怎么知道要找什么?

例如,如果我照顾悬空指针:

int *ptr = malloc(1000 * sizeof *ptr);
// Do some stuff here
free(ptr);
ptr = NULL;

攻击者仍然可以控制吗?

然后作者将printf(user_input) // input "%3$x" prints 3rd integer on the stack指向printf格式字符串错误。这是什么意思? 我真的很想知道它是如何运作的。

我也想知道单元测试,模拟和存根是否也可以通过指出可能发生错误的一些可能的地方来帮助使程序更安全。

如何使用简单的工具和知识确保我的代码安全?

0 个答案:

没有答案