1. 程式人生 > >第六週 深入第三章——程式的機器級表示(大二白學的彙編+緩衝區溢位)

第六週 深入第三章——程式的機器級表示(大二白學的彙編+緩衝區溢位)

flag必倒定律2333.

緩衝區溢位

常見形式

1.攻擊程式碼:輸入包含一些可執行程式碼的位元組編碼。 2.用一個指向攻擊程式碼的指標覆蓋返回地址。

空操作雪橇

nop~ 在實際的攻擊程式碼前插入很長的一段空操作,只要攻擊者能夠猜中這段序列中的某個地址,程式就會經過這個序列到達攻擊程式碼。

如果建立一個256位元組的nop sled ,列舉215=32768個起始地址就能破解n=223的隨機化。

棧破壞檢測

棧隨機化

棧保護者機制

在棧幀中任何區域性緩衝區與棧狀態之間儲存一個特殊的金絲值(也成為哨兵值)。

限制可執行程式碼區域

彙編查漏補缺

說是查漏補缺,但窩覺得窩彙編就像沒學一樣。。。 x86-64

(劃重點)

錯題筆記

練習題3.3 解釋錯誤程式碼

(p125)

movb $0xF, (%ebx)       Cannot use %ebx as address register (x86-64,指標儲存為8位元組的四字) movb $0xF, (%rbx)

movl %rax, (%rsp)         Mismatch between instruction suffix and register ID movq %rax, (%rsp)

movb %al, %sl               No register named %sl 。。。行吧。

movl %eax, %rdx          Destination operand incorrect size 暫存器部分的大小必須和指令最後一個字元匹配 其實這個還是有點迷啊。。。 reference