簡體   English   中英

使用 Int 的緩沖區溢出攻擊

[英]Buffer Overflow Attack with Int

char c[10];
int value = 1;

為什么在我輸入 12 個字符之前值變為 0? 為什么 12 不是 10 或 11? (我知道終結者以及它是如何推到下一個 memory 空間的)

給定類型的對象通常放置在 memory 位置,這些位置是 object 大小的倍數,即 object對齊到與其大小匹配的邊界。

int的大小通常為 4 個字節。 如果c位於 memory 中的value之前,並且如果c從 4 字節偏移量開始,那么它們之間將有兩個字節的填充。 這可以解釋為什么除非向c寫入超過 12 個字節或更多字節,否則value不會被覆蓋。

另請注意,就 C 標准而言,這都是未定義的行為,但是為了利用漏洞,檢查特定實現在特定條件下執行的操作可能很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM