---
# System prepended metadata

title: '**war game**'

---

**war game**
===

![](https://i.imgur.com/xlNdDtT.png)

ssh
---
    1.一種連線加密機制
    2.在與遠端連線時，訊息會先加密再進行傳送
    3.pk crpyto
    4.RSA,DSA（公鑰加密演算法）
command
---
    1.一開始只需要用簡單的ls、cd、cat就能通關
    2.後面就要使用find來找到特定的file
**CTF**
===

reverse 
---
    1.trace code
    2.GDB(GNU debugger)
    3.組合語言
    4.使用的函數和判斷式
    5.general purpose register:
        RAX 特殊用途：存放運算結果，執行乘法及除法指令時，會自動使用
        RBX 特殊用途：基底定址法的基底暫存器
        RCX 特殊用途：做迴圈的計數器
        RDX 特殊用途：資料暫存器
        堆疊指位器 RSP：指向 Stack 的頂端（Point to the top of stack）
        基底指位器 RBP：指向 Stack 的底部（Point to the bottom of stack）
        索引指位器 RSI、RDI
        程式指位器 RIP：主掌CPU動向的暫存器(放下一個指令位址)
Pwn
---
    1.攻擊程式漏洞
    2.記憶體保護機制:
        canary: 一個放在 stack 上的隨機值，位置在 old rbp 跟 return address 之前，會在函數要結束的時候被檢查值是否被更動，作為判斷是否有 overflow 的依據。
        fortify: 編譯時，compiler 會對可預知長度且與 libc 函數呼叫有關的變數做長度上限的檢查，如果執行時發現有越界的函數，就會程式就會強制結束
        NX: Non-Executable，強制『可寫段不可執行，可執行段不可寫』的原則，也就是無法直接寫 shellcode 然後執行，以及不能竄改可執行的區段。
        PIE: Position Independent Executable，讓記憶體區段隨機分配，所以執行前沒辦法準確知道 base address 的位置，也就推算不出函數與變數的地址。
        RELRO: Relocation Read-Only，代表 binary 中的 header 在 linker 執行完後會是 read-only，如果是 FULL RELRO 甚至連 GOT 表也會一開始填好並變成唯讀。
web
---
    1.找出網站漏洞
    2.前後端
    3.cookie-紀錄使用者資訊
    4.SQL(structure query language)
**terminal 美化**
===

before
![](https://i.imgur.com/DkZoPy9.jpg)
---
after
![](https://i.imgur.com/Ofy4Bfi.png)
---
**HackMD 使用**
===

**下次讀書會**
===
    1.把之前的專題培訓影片看過
    2.去picoCTF練習一些題目
    3.查資安相關的paper

**reference**
===
    ssh: https://codecharms.me/posts/security-ssh
    reverse: https://tech-blog.cymetrics.io/posts/crystal/reverse-01/
    pwn: https://tech-blog.cymetrics.io/posts/crystal/pwn-intro/
    web: https://blog.techbridge.cc/2021/02/20/web-ctf-is-fun/
