**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/