---
# System prepended metadata

title: 108 第五次社課
tags: ['1081']

---

108 第五次社課
===
###### tags: `1081`

:::success
簽到：
B073040047 楊志璿
B063040059 陳縵欣
M063040019 劉育錡
B083040036 蔡明霖
B083040044 沈育齊
B083040004 艾保丞
B083040037 黃琮閔
B073040050 翁昌閔
B053040008 陳珏安
B083040021 嚴宇同
B053040011 劉其萱
B083011026 蘇彥龍
B083011023 陳又𩑹
B083040045 李亦晴
B083040014 陳昱維
B063040013 李洳瑄
B083040025 蔡苡暄
B073040032 涂哲誠
B073040023 花千祐
B073040022 張浩綸
B051010001 曾湘庭
B073040025 張睿壬
M083140001 張郢展
M083140005 曾煜鈞
:::

## 社課筆記
* [python CTF by @Sophie Shin](https://hackmd.io/@CDPA/PythonCTF#/)
    * 學習如何使用pwntools來解題
* [Google hacking](https://docs.google.com/presentation/d/1XP78nQ2rFvaaoQeUotWCCASlp1PNzsB3xKHv4g42zvE/edit?usp=sharing)
    * 小心 Google 就在你身邊
* [Buffer overflow的攻防](https://docs.google.com/presentation/d/1qeusguExL7_dZTkSzeQvJK0O_XShgZrB4UQg4BqNnxo/edit?usp=sharing)
    * 了解buffer overflow的部分防禦機制


ssh user@macaca.cool -p 3001

username: user
password: Is_l4b_pw

tmux 是好東西，希望每個人都有一個

如何安裝呢？
```language=shell
$sudo apt install tmux
```
這樣就好瞜~ :)))

tmux 教學:



## Buffer Overflow的攻防
* MISC
    * 見識要廣，閱歷要廣
* Web
    * [DVWA](http://www.dvwa.co.uk/)
        * 可自己練習如何架攻擊的伺服器，並打穿(X)
        * 小心不要被別人攻擊
    * [JsFun\(c\)k](https://codepen.io/jwm/pen/MymRpV)
        * JsFunk比較好聽拉QAQ
        * 讓JavaScript程式碼變得很難讀
        * 直接丟console就可以直接執行
    * [aaencode](https://blog.techbridge.cc/2016/07/16/javascript-jsfuck-and-aaencode/)
        * 也是奇葩的 encoding
        * 丟 F12 console 也是可以執行
### pwn
* 先備知識：==前面 pwn 的課程==
* [system function](https://linux.die.net/man/3/system)
    * <del>system is a system call in system</del>
    * 一個系統呼叫指令、函式
* shell
    * [what is shell?](https://man.linuxde.net/linux-shell-%E5%AE%8C%E5%85%A8%E8%A9%B3%E8%A7%A3)
    * [鳥哥](http://linux.vbird.org/linux_basic/0320bash/0320bash-fc4.php)
* [execve](http://man7.org/linux/man-pages/man2/execve.2.html)
    * 也是一個 system call in linux
* shellcode
    * [介紹 shellcode](https://medium.com/@ktecv2000/%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E4%BD%8D%E6%94%BB%E6%93%8A%E4%B9%8B%E4%BA%8C-buffer-overflow-b0a33d43ba1d)
* [NULL](https://en.wikipedia.org/wiki/Null#Computing)
    * 某種「空」
* bss 段
    * 前面社課有說過
    * [淺談 text 段、data 段和 bss 段](https://zhuanlan.zhihu.com/p/28659560)
    * [這裡也有NOP](https://medium.com/@ktecv2000/%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E4%BD%8D%E6%94%BB%E6%93%8A%E4%B9%8B%E4%BA%8C-buffer-overflow-b0a33d43ba1d)
 
### 保護模式 
* 使用 `checksec filename` 指令可以查看保護機制是否有開啟
* Stack Canary
    * Stack Protector
    * 防bof漏洞攻擊
    * 若有開啟Canary，則程式執行時會在return address前放一個隨機值叫Canary
    * 如果利用bof等方式去竄改return address，這個隨機值就會被改
    * return之後會檢查Canary，若發現Canary被竄改則會直接停止執行
* NX：有些 Section 有執行權限，有些沒有
    * data segment 通常不該有執行權限
    * 例如 stack、heap 都只有 rw- 權限
* PIE
    * 若有開啟，則隨機化 code 段的 base 位址
    * 若沒開啟，則固定以 0x40000000 為 base 位址
    * 可以竄改 PIE，讓他關掉
* ASLR
    * Library 和 stack 的 base 位址隨機化
        * Libc base 位址是隨機的 (但在用 gdb 時，base 位址會是固定的)
    * 通常都是有開啟的
    * gdb 預設是關閉
    * `ldd elffile`
        * 查看該ELF檔案使用什麼library (.so檔)

### ROP (Return Oriented Programming)
透過Return跳轉到下一個控制的地方，進而取得對方的shell
* gadget：小代碼，**裡面最後通常帶有ret (return)**，也可以利用call eax(或其他register)這種跳轉
    * ROPgadget
* 可以一直跳來跳去來拼湊程式碼，來執行我們要做的事情(Get shell!!)
* 跳跳跳

---
頁尾交流區
>[name=楊志璿]歡迎留下問題意見、或想法
>[name=陳縵欣]推薦修希加Steve的python，**內容很多，作業很難** XD，但作業是寫遊戲哦哦哦蠻好玩
>>[name=修過課的人]從一開始的作業就是為了做遊戲出來，作業是循序漸進的。前年是數獨，去年是西洋棋。
>[name=修過課的人]修C+的課eq要很好(?)，說要出作業，說了一~二週才出，然後作業說明百行起跳，也會在週末還有期烤時間出作業，作業DL又超短
>[name=陳縵欣]英文閱讀能力upup (X)，寫作業真的一度氣氣氣氣氣，但寫出來也蠻有成就感(?
>>[name=修過課的人]我是覺得他的英文很難懂啦qq俄式英文(?)