Try   HackMD

CTF

什麼是 CTF

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

CTF 全稱 Capture The Flag
比賽的目標就是使用通靈駭客技巧攻下有漏洞的服務,並且取得被稱為 Flag 的指定字串

CTF 的領域

  • Web 網頁相關的所有東西
  • Reverse 掛仔逆向工程
  • Pwn(Binary Exploitaion) 駭進你家電子冰箱然後播 Rickroll
  • Crypto 密碼學(實際上是數學)
  • Forensics 分析你電腦裡的資訊,包括記憶體或是檔案之類的(通靈之一)
  • Misc 不知道要分哪裏的都會放在這裡(通靈之二)

CTF 的種類

Jeopardy

解題類型的 CTF
主辦方會為每種領域出不同的題目
一般初賽都會是這種形式

A&D(Attack & Defense)

主辦方會為每一個隊伍提供主機跟有一堆洞洞的服務
每個隊伍需要為服務上 patch 並且攻擊其他隊伍的伺服器
如果服務不能正常運行會被扣分

KoH(King of the Hill)

主辦方提供一個服務
佔領該主機越久的隊伍可以拿越多分

資安的一些名詞

CVE

https://cve.mitre.org/
簡單來說就是一個漏洞的資料庫,他會對每個找到的漏洞提供一個編號,並且對該漏洞給出評分來表示他的危害程度
其中漏洞的行為包括下列這些

  • RCE(Remote Code Execution)
  • Directory Traversal
  • Arbitrary File Read/Write
  • Privilege Escalation

滲透測試 Penetration Test

簡單來說就是蒐集資訊(戳漏洞)
真實世界的情境下,許多服務或是產品都是黑箱,你並不知道原始碼
於是你只好使用工具來獲取相關的資訊(版本、型號),並掃看看有什麼可疑的東西(port、路徑)

0 Day/1 Day/N Day

找到的漏洞我們會分類成 0 Day/1 Day/N Day
概念其實就是依據找到的時間差
0 Day 就是你是第一個找到的人
而 1 Day 則是你很快就知道了這個漏洞,並嘗試去復現
N Day 就是一堆人都玩過這個漏洞了你才去玩

先備技能

  • 會寫簡單 Python
  • 對電腦有興趣
  • 喜歡電腦
  • 成為電腦

學習資源

  • PicoCTF 初學者通常都推這個
  • LiveOverflow 很多酷影片
  • LotuxCTF 我朋友創的新手向 CTF,每周都會有 writeup
  • HackmeCTF 很多老梗題
  • CTFTime 比賽資訊集中網站,每周都會有比賽
  • Maple blog 台灣 Web 跟 Crypto 大佬的部落格

相關活動

  • AIS3 台灣一個資安暑期營隊,教育部辦的
  • AIS3 EOF 台灣一個偏難的 CTF 比賽,教育部辦的
  • 金盾獎 台灣一個通靈的資安比賽,政府辦的
  • HITCON 台灣的資安年會
  • HITCON CTF 台灣一個很難的 CTF 比賽

Linux

什麼是 Linux

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

一隻企鵝
Linux 是一種自由和開源的類 UNIX 作業系統。該作業系統的核心由 Linux Torvlads 在 1991 年 10 月 5 日首次發布,再加上使用者空間的應用程式之後,就成為了 Linux 作業系統。Linux 也是自由軟體和開放原始碼軟體發展中最著名的例子。只要遵循 GNU 通用公共許可證(GPL),任何個人和機構都可以自由地使用 Linux 的所有底層原始碼,也可以自由地修改和再發布。

By the way I use Ubuntu

有兩種方式可以在你的電腦上使用 Linux
分別是雙系統跟虛擬機
虛擬機可以使用 VirtualBox 或是 VMware
安裝時,首先要去官網把 iso 抓下來

Terminal 操作

目錄

Windows 底下的資料夾(folder),我們在 Linux 中會稱為目錄(directory)
而所有目錄都是從根目錄開始(/)

一般目錄

  • / 根目錄
  • ./ 當前目錄
  • ../ 上一層目錄
  • ~ 自己的家目錄
  • /bin 系統中的程式
  • /lib 系統中的動態函式庫
  • /dev 系統中的裝置
  • /etc 重要的檔案
  • /boot 核心及開機相關的檔案
  • /proc 放系統核心與執行程序的資訊
  • /home 家目錄
  • /tmp 暫存檔

常用指令

  • ls 列出目錄下的成員 ls ./foo
  • cat/head/tail 印出檔案內容,head 跟 tail 分別是從頭尾開始印 cat ./foo/bar.txt
  • cd 到另一個目錄 cd ./foo/bar
  • echo 印出字串 echo starburst
  • grep 從文字中找出對應的子字串 cat ./foo/bar.txt | grep hello
  • cp/mv 複製跟移動 cp ./foo/bar.txt /tmp/haha.txt
  • touch/rm 新增及刪除檔案 touch bruh rm bruh
  • mkdir/rmdir 新增及刪除目錄 mkdir foobar
  • chmod 更改檔案或目錄權限 chmod foobar 755
  • ssh ssh到另一台機器 ssh 192.168.0.1
  • nc 向目標發起 TCP 連線 nc 192.168.0.1 1337
  • curl 發送 HTTP 請求 curl https://www.google.com
  • wget 發送 HTTP 請求並將檔案下載下來 wget https://www.google.com
  • vi/vim/nano 編輯檔案
  • zip/unzip 壓縮跟解壓縮
  • top/htop 查看執行緒
  • apt 套件管理

特殊指令

  • strings 從檔案找出有意義的字串(至少可以顯示)

執行執行檔

./executable

pipe & redirect

在打指令時,我們可以使用 | 將指令的結果輸出當成另一個指令的輸入

$ cat something | grep foobar

而若是要將結果輸出到檔案而不是 stdout 時,我們可以使用 >

$ cat something > file.txt
$ echo starburst > foobar.txt
$ ./program > result.txt $2>$1 #redirect stderr to stdout