iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
0
Security

CTF30系列 第 21

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

很遺憾的,昨天團體賽失敗了。隊友其實有發出文章,但是存成草稿。真心希望主辦單位能注意到這個問題,畢竟已經不是第一組或第一個這樣失敗的參賽者。

簡介

這是一題比較簡單的 Pwn 題。一樣用 nc 連上去拿 flag。

Pwntools

之前看過一個有趣的工具,Pwntools。它基本上是以打 Pwn 來開發的,所以有各種工具,例如連上 nc,等字串.... 感覺這也可以拿來 telnet?

GitHub - Gallopsled/pwntools: CTF framework and exploit development library

不過可惜的是,Pwntools 目前只支持 python 2。

pwn checksec <file> 可以檢查程式是不是有一些針對 pwn 的保護。

[es@es-l tmp]$ pwn checksec ./classic_aa9e979fd5c597526ef30c003bffee474b314e22
[*] '/tmp/classic_aa9e979fd5c597526ef30c003bffee474b314e22'
    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)

以這個來說,一個都沒開。

Pwn 的保護

從上面可以看到有數種保護。

RELRO

Relocation Read-Only。有分成 Partial 和 Full 兩種模式。
Partial 下,非 PLT 的 GOT 是只能讀,而 .got.plt 是可以寫的。

(PLT 是指 Procedure Linkage Table,像是 puts@plt 就是指說,這函式的位置在編譯時是不知道的,得靠 runtime 動態連結)

Stack

Stack Canary。Stack Canary 指的是實驗室裡面的鳥,假設鳥死了就塊陶。

Canary 在程式中是指說,可能在 Stack 某處會放一個數字。這數字在函式返回時會拿來比對,假設不對,代表說 Stack 被溢位了。

下集會提到 NX 和 PIE。


上一篇
CTF 13: QR Checker (Misc/QR, SECCON 2018 Online CTF)
下一篇
CTF 14: classic (Pwn, SECCON 2018 Online CTF)
系列文
CTF3030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
虎虎
iT邦研究生 5 級 ‧ 2018-11-06 15:29:58

佛系參賽 XDDDD

我要留言

立即登入留言