第六週 深入第三章——程式的機器級表示(大二白學的彙編+緩衝區溢位)
阿新 • • 發佈:2018-12-15
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