CTF(Pwn)32位文件 和 64 文件 的 差异
生活随笔
收集整理的這篇文章主要介紹了
CTF(Pwn)32位文件 和 64 文件 的 差异
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一. 地址方面字節(jié)上的差異
32位是cpu一次處理的位數(shù),即32位4字節(jié),相當(dāng)于地址的寬度,即sizeof(*p);虛擬地址大小為4G,即有2的32次方個地址,從32個0到32個1個地址;64位是cpu一次處理的位數(shù),即64位8字節(jié),相當(dāng)于地址的寬度,即sizeof(*p);虛擬地址大小為128G,即有2的64次方個地址,從64個0到64個1個地址;在寫Exp的時候: 64位
32位:
————————————————
二.函數(shù)調(diào)用方面的差異
由于函數(shù)調(diào)用這方面的差異:
在寫 ExP,payload的時候:
32 位: p32(system)+p32(bin_sh)
64 位: p64(rdi)+p64(bin_sh)+p64(system)
出現(xiàn)棧劫持的時候 p(binsh)在前面
三.格式化漏洞利用方面的差異
64位的格式化字符串漏洞,它跟32位有挺大區(qū)別的,要注意‘00’的截斷,不可以像32位那樣一步修改到位,它一次只可修改2字節(jié)。
出現(xiàn)截斷這種情況時,我們可以根據(jù)情況更改偏移量,或者填充字符來克服;
而32位
相比64位利用起來就很簡單;
32位的 payload = p32(泄露地址) + %偏移$x 來構(gòu)建
類似payload=p32(printf_got)+"%6$s"
64位
payload=“aa%9$nAAA”+p64(judge)
64位文件
為了字符串不被截斷,我們只能將地址給放在字符串的后面了
總結(jié)
以上是生活随笔為你收集整理的CTF(Pwn)32位文件 和 64 文件 的 差异的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF(Pwn) Rop + ret2
- 下一篇: 攻防世界(pwn) level3