2024 CKEFGISC Winter Camp
Lecturer:水獺
目錄(可點)
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
CTF簡介
這是什麼?
Why CTF?
類型介紹
類型介紹---Web
題目型態: 網頁
特性: 利用網頁的各個組成部件,如前端程式檔案、
Cookie、robot.txt、Database等,有的時候也
會利用程式語言的特性
類型介紹---Forensic & Stego
題目型態: 圖片、PPT、Docx、封包等
特性: 以檔案隱寫、巨集執行等方式將Flag 包含於
題目所給的圖片、文件或封包等等檔案中,
通常要用到各種分析工具才能找到Flag。
P.S: 這是我覺得最有趣的一個分類
名字來源: Miscellaneous(各式各樣、大雜燴)的前四個字母
題目型態: 無法分類、奇奇怪怪的題目
特性: 包含Recon(訊息收集)、Encode(編碼轉換),
有些資料也會將Forensics & Stego包含在內。
類型介紹---MISC
題目型態: 加密過的檔案、有問題的加密演算法
特性: 簡單的題目可以直接用加解密工具,但大多數題
目需要比較多的計算或者比較難的數學。包含密
文解密、加密演算法漏洞等,有的時候題目會自
己發明演算法要你找問題。
類型介紹---Cryptography
題目型態: 用各種不同語言寫好的程式或執行檔
特性: 分析意思或讀懂組合語言之後才可能取得Flag,
若知道執行檔的撰寫語言也可能可以使用反組譯
工具。
類型介紹---Reverse Engineering
題目型態: 有問題的程式碼、遠端主機、
RCE---遠端程式碼執行(Remote Code Execution)
特性: 以輸入造成程式或環境的崩壞並取得Flag,通常
會牽涉到記憶體與組合語言的特性,也有
privilege escalation(特權提升)、sandbox escape
等等類型。
P.S.: 題目通常都變態難,應該是最困難的分類
類型介紹---PWN
今天我們大部份會在這個網站上做題目的練習
大家可以先看講義上的說明創建帳號
記得要改18歲以上不然他好像會要你爸媽同意還是什麼的
創建PicoCTF帳號
創好之後就可以登進去逛逛,裡面有:
Web Exploitation 、 Cryptography 、 Reverse Engineering、Forensics 、 General Skills 、 Binary Exploitation(很像PWN)
等六個分類
BUUCTF:中國的CTF網站,上面的題目多元但難度較高,今天有幾題練習是從上面出來的(答案格式是「Flag{這裡放你找到的flag}」)
番外:其他網站
也可以註冊一下~
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
安裝各種東西
Windows-Wireshark
選擇性(不一定要裝,今天應該不會用,不過非常好工具)
WSL-Python
sudo apt install python3
python3 filename
WSL-Binwalk
sudo apt install binwalk
WSL-Ruby & zsteg
sudo apt install ruby
sudo gem install zsteg
WSL-Java & Stegsolve
wget http://www.caesum.com/handbook/Stegsolve.jar -O stegsolve.jar
chmod +x stegsolve.jar
mkdir stegsolve
mv stegsolve.jar stegsolve/
sudo apt install default-jre
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
指令&符號補充
man
man commandName
來取得某個指令的使用方式與參數意義,如:
man cat
net cat/nc
netcat/nc url port
即可連線並取得port回傳之資料,如:
netcat/nc mercury.picoctf.net 22342
pipe( | )
cat file.txt | grep picoCTF
strings
strings fileName
也可以與grep連用,如:
strings file1.txt | grep picoCTF
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
Web
基本介紹
網頁運作
HTTP
狀態代碼 | 1XX | 2XX | 3XX | 4XX | 5XX |
---|---|---|---|---|---|
狀態 | 資訊(暫時狀態) | 成功 | 重新導向 | 用戶端錯誤 | 伺服器端錯誤 |
傳輸方式:Get or Post
兩種伺服器傳送資料的方式:
www.url.com?user=admin
user(使用者)
https://play.picoctf.org/practice?category=4
practice的category編號
前端三本柱
開發人員工具F12
在網頁裡按下F12或右鍵點「檢查」:
HTML架構
curl
Option | -X | -I | --data | -G | -H |
---|---|---|---|---|---|
用途 | 傳送指定指令 | 傳送head請求 | GET(或POST) | 傳送資料(搭配GET & POST) | 改Request Header |
伺服器回應 | 視傳送的指令而定 | head http訊息(回傳respones header) | 無(需搭配get或post) | 對應資料 | 無(更改Request Header) |
實例 | -X POST 傳送POST指令 | PicoCTF - GET aHead |
--data “資料名稱&值” (key1=value1 & key2=value2) |
PicoCTF - Picobrowser | PicoCTF - Picobrowser |
curl *options url
curl -G --data "user=admin&passwd=a12345678" http://goodCTF.com:27493/
範例:-G(get),--data後面接要用於get方法的資料名稱和值,最後放網址
curl -I http://www.example.com/data.php
範例:-I(請求respones header),後放網址
curl
curl -X POST --data "email=sample@example.com&press=%20SEND%20" http://www.example.com/data.php
範例:-X POST,--data後面接要用POST方法的資料名稱和值,其中因為POST預設使用的格式為「application/x-www-form-urlencoded」,這個格式使用的是百分比編碼(Percent encoding),此編碼中的空格為保留字元,以「%20」表示,所以用於POST的值需要先人工編碼(空格 to %20)
<form method="POST" action="data.php"> <!-- 建立一個HTML表單,並且表單資料會被以http post的傳輸方式傳到data.php這個遠端程式中 -->
<input type=text name="email">
<input type=submit name= value=" SEND "> <!-- 這裡是 *空格*SEND*空格* -->
</form>
這是一個HTML FORM的範扣
curl -H "path:/api/challenges/9/" https://play.picoctf.org/
範例:-H(request header),可以更改指定的request header後發出請求,最後放網址
番外:Request/Response Header
當發送 GET/POST 請求後,除了資料內容之外,還需附上表頭來紀錄各種資料/設定
番外:Request/Response Header
這時候你會發現這裡一片空
別緊張
按下隨便一題之後
就會看到一堆東西彈出來了
點進去「標頭(Header)」標籤
就可以看到上面是Respones Header(回應標頭)
下面則是Request Header(要求標頭)
curl:補充參數
Option | --user-agent | --cookie | -o/-O | -C | -i |
---|---|---|---|---|---|
用途 | 單獨改user-agent(多個header參數還是要用-H) | 單獨攜帶 cookie(多個header參數還是要用-H) | 下載檔案(跟wget很像) | 網路中斷後繼續下載 | 傳送head+網頁原始碼請求 |
伺服器回應 | 依不同user-agent而定 | 依不同cookie而定 | 網址導向的檔案 | 網址導向的檔案 | head http訊息(回傳respones header)+網頁原始碼 |
實例 | PicoCTF - Picobrowser | 無 | 無 | 無 | PicoCTF - GET aHead |
curl -H "user-agent:Chrome/116.0.0.0 Safari/537.36" https://play.picoctf.org/
#等價於
curl --user-agent Chrome/116.0.0.0 Safari/537.36 https://play.picoctf.org/
curl -o fileName fileURL #-o(小寫)代表重新命名下載的檔案
curl -O fileURL #-O(大寫)代表直接使用原本的檔案命名
curl -C -o fileName fileURL #-C -o代表繼續下載因網路中斷而未下載完的檔案並命名為fileName
curl
Cookie
應用程式(Application) --> Cookies,
可以看到瀏覽當下網頁使用的Cookie
Cookie
robots.txt
robots.txt
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
Forensic & Stego
這是什麼
Hexed.it
檔案頭尾
十六進位下的檔案開頭結尾!
檔案頭尾
常見的檔案開頭結尾(可能有少部分例外)
檔案類型 | 檔案開頭 | 檔案結尾 |
---|---|---|
.jpg(JPEG圖片) | FFD8FF | FFD9 |
.png(PNG圖片) | 89054E47 | AE426082 |
.zip(壓縮檔) | 504B0304 | 504B |
.gif(動圖) | 47494638或GIF89A | 003B |
.pdf(PDF) | 255044462D312E | 不一定 |
Stegsolve
這是什麼?
開啟方式
java -jar stegsolve.jar
Stegsolve
Stegsolve
開啟圖片
另存目前結果
退出
圖檔資訊檢視
數據提取
輪廓分離
單幀播放
圖片組合器
圖檔資訊檢視:依據圖片格式不同可能有多有少
數據提取:看最低有效位
輪廓分離:可以自己試試看,不常用
單幀播放:適用於GIF檔,可以一幀一幀分析儲存
圖片組合器:再輸入一張圖片後利用OR、AND、XOR、
ADD等等模式組合兩張圖後顯示
Binwalk
binwalk fileName
binwalk -Me fileName
Binwalk
最低有效位概念
最低有效位概念
zsteg pictureName -a
若該圖片有使用LSB儲存資料則可以取得其資訊
最低有效位概念
分析方式2:
以最低位儲存的資訊了
最低有效位概念
封包
Wireshark
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
MISC
名稱來源?
包含什麼?
練習
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
Cryptography
Caesar cipher
凱薩大帝:「如果需要保密,信中便用暗號,也即是改變字母順序,使局外人無法組成一個單詞。 如果想要讀懂和理解它們的意思,得用第4個字母置換第一個字母,即以D代A,余此類推。」
Caesar cipher
各種ROT
加後 > 最大值改用減
減後 < 最小值改用加
種類 | 加密對象 | 加密方式 | 例子 |
---|---|---|---|
ROT5 | 數字 | 替代數字序 = 原數字序 ± 5 | 123 --> 678 |
ROT13 | 字母 | 替代字母序 = 原字母序 ± 13 | cat --> png |
ROT18 | 數字&字母 | 替代數字序 = 原數字序 ± 5 替代字母序 = 原字母序 ± 13 |
mhy1031 --> zul6586 |
ROT47 | 數字&字母&符號 | ASCII code中 替代字元序 = 原字元序 ± 47 |
2024CKEFGISC! --> a_acrztuvx$rP |
各種ROT
RSA
RSA ---例子
太大的數字不好算 這裡我用小的數字舉例
RSA
■
■
■
■
■
RSA
■
■
■
■
■
RSA
■
■
■
■
■
807叫我把證明過程講一遍┌( ಠ_ಠ)┘
RSA:證明
先備知識1:歐拉函數φ(n),n ∈ N
RSA:證明
先備知識2:費馬小定理
代表什麼?
RSA:證明
代表什麼?
RSA:證明
先備知識3:費馬-歐拉定理
因為歐拉在證明費馬小定理時發現他是正確的,但沒辦法一般化(他想把「p ∈ 質數」的限制放開)
代表什麼?
歐拉定理原型:a , n ∈ Z , 當a ⊥ n時,則:
RSA:證明
RSA:證明
你發現什麼?
RSA:證明
前面有說到,X集合中的元素有三個特性:
基本上我們只要證明Y集合中的所有元素都符合這三個條件,就能推出Y集合 = X集合這件事(對單一個 是唯一解)
RSA:證明
RSA:證明
RSA:證明
你發現什麼?
RSA:證明
RSA:證明
RSA:證明
RSA:證明
RSA:證明
RSA:證明
RSA:證明
RSA:證明
現在我們已經知道X集合=Y集合
剩下最後一步了!
RSA:證明
RSA:證明
這裡有幾個a?
RSA:證明
RSA:證明
:證了這麼多,RSA到底為甚麼成立?
我們從加密過程開始看起:
RSA:證明
RSA:證明
RSA
等等...
RSA
RSA
OTP
OTP---例子
假設現在我要加密的是Otter這個單字
並且我選用Eagle來做為金鑰
OTP---例子
我有了Xor的結果(密文)
接著我要解密則需要把密文和金鑰做一次Xor就行
OTP
Visual Cryptography
Visual Cryptography---分析
利用Stegsolve
將第一張圖片開啟之後
按下Image Combiner
再開啟另一張圖片
Visual Cryptography---分析
之後就會出現右圖畫面
左上角的Xor是預設的分析模式
按鍵盤左右箭頭或下方左右按鈕可以切換模式
Save按鈕則可保存目前圖片
Visual Cryptography---分析
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
本次課程內容
CTF簡介
安裝各種東西
指令&符號補充
Web
Reverse Engineering & PWN
Cryptography
MISC
Forensic & Stego
Reverse Engineering & PWN
為何不教?
p.s.如果你想深入研究PWN,我推薦一個網站
Q&A&DO