# 哈哈哈哈
- 1.ctf概念
- 2.hackmd
- 3.pwn工具介紹
- 4.pwnable(passcode)
<!-- .slide: data-transition="zoom" -->
---
# ctf概念
- 模擬戰爭遊戲中的<span><!-- .element: class="fragment highlight-red" -->搶旗</span>模式,今主要指一種模擬<span><!-- .element: class="fragment highlight-red" -->入侵與防禦的遊戲</span>,參賽隊伍必須以入侵、分析封包、破解密碼等各種手段獲得 flag。
- 三種類型
- <span><!-- .element: class="fragment highlight-red" -->Jeopardy</span>
- <span><!-- .element: class="fragment highlight-red" -->Attack & Defense</span>
- <span><!-- .element: class="fragment highlight-red" -->King of the Hill</span>
<!-- .slide: data-transition="zoom" -->
---
# Jeopardy
- 最常見的 CTF 模式
- pwn
- reverse
- web
- crypto
- forensic
- misc
<!-- .slide: data-transition="zoom" -->
Note:123
---
# Attack & Defense
- 參賽隊伍需要維護一台上面跑著數個服務的主機,要一面找出漏洞,並進一步<span><!-- .element: class="fragment highlight-red" -->修補服務的漏洞</span>,也要一面<span><!-- .element: class="fragment highlight-red" -->寫出漏洞的利用方式</span>,對其他隊伍進行攻擊
<!-- .slide: data-transition="zoom" -->
---

<!-- .slide: data-transition="zoom" -->
---

<!-- .slide: data-transition="zoom" -->
---
# King of the Hill
- 比賽差異性大,規則比較不一定
- 分數由少部分隊伍取的
<!-- .slide: data-transition="zoom" -->
---
# hackmd
- tag:######
- 標題大小:1-5個#
- tab鍵分段落
- 6個`(三上三下包含程式內容)
- 前三個後方可以輸入程式類型
- 2個`可以包含一句程式(包含在文字內)
- 下載或截圖直接拉進內容
<!-- .slide: data-transition="zoom" -->
---
# pwn工具介紹
<!-- .slide: data-transition="zoom" -->
---
# 工具
- objdump
- gdb peda
<!-- .slide: data-transition="zoom" -->
---
# objdump
- <span><!-- .element: class="fragment highlight-red" -->靜態</span>分析工具
- 閱讀系統為<span><!-- .element: class="fragment highlight-red" -->二進制的ELF</span>檔案
- 存在於linux當中,如:計算機指令,資料等
- -d 反彙編那些應該還有指令機器碼的section(-D 反彙編所有section)
- -r 顯示檔的重定位入口
- -R 顯示檔的動態重定位入口
---
# gdb peda
- 動態分析工具
- 追蹤每一行組語
- install:`sudo apt install git
git clone https://github.com/scwuaptx/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
cp ~/peda/.inputrc ~/`
<!-- .slide: data-transition="zoom" -->
---
- vmmap
- 查看目前記憶體分布
- rwx權限
- run
- 執行
- 簡寫成 r
- disassemble < func>
- 反組譯
- 列出程式用到的所有func
<!-- .slide: data-transition="zoom" -->
---
- break
- 設斷點
- 簡寫成b
- 記憶體位置前加*
- ni
- 下一個指令
- 直接執行func
- 簡寫成n
- si
- 下一個指令
- 逐步執行func中的指令
- 簡寫成s
<!-- .slide: data-transition="zoom" -->
---
- continue
- 執行到斷點
- q
- 離開
- j *<0x00000>
- 跳到某個位置
<!-- .slide: data-transition="zoom" -->
---
- x/[Size][Format]
- 印出記憶體資料
- size
- b(1byte)
- h(2byte)
- w(4byte)
- g(8byte)
- format
- o octal(8進制)
- x hexadecimal(16進制)
- t binary
- s string
<!-- .slide: data-transition="zoom" -->
---
# pwnable實作(passcode)
- `http://pwnable.kr/`
- 
<!-- .slide: data-transition="zoom" -->
---
{"metaMigratedAt":"2023-06-15T09:11:21.582Z","metaMigratedFrom":"YAML","title":"哈哈哈哈","breaks":true,"slideOptions":"{\"spotlight\":{\"enabled\":true}}","contributors":"[{\"id\":\"4deecc40-67bc-450d-800d-ce13befa988f\",\"add\":3527,\"del\":502}]"}