iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
Security

CTF30系列 第 24

CTF 14: classic (Pwn, SECCON 2018 Online CTF)

ROP + Shell

因為程式在吃 gets 之後,跑 puts 之後就會離開,所以我們要影響程式的執行路徑。

  1. 使其告知我們 puts@got 的位置
  2. 推算 libc 的位置
  3. 推算 system() 位置

因為我們可以蓋 RIP,故可以串起 ROP 攻擊鏈。
一開始我們需要找到程式中有 pop ret 的地方。在這程式中,剛好在 0x400753 中可以用。這個可以用 pwntoolspeda (gdb 工具) 來找。

所以我們第一步會是把 RIP 蓋成 0x400753
我們手上有這程式用的 libc ELF,所以我們可以透過 leak 某函式位置,倒推出 libc 的位置。
因為我們第一步已經會執行 pop ret,所以可以直接把接下來要執行的東西寫在後面。

  1. pop ret 位置
  2. gets@got 位置
  3. puts@plt 位置
  4. libc 中 symbols 的位置

此時我們若把這些東西送出去,就可以看到返回的 libcsystem() 的位置。
利用這份資訊,在第二次送出時,即可用一樣的套路來執行 shell。

參考資料

SECCON 2018 Online CTF Writeup - yyy


上一篇
CTF 14: classic (Pwn, SECCON 2018 Online CTF)
下一篇
CTF 15: auth3ntication (Web, BSides Delhi CTF 2018)
系列文
CTF3030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言