---
# System prepended metadata

title: EASONOTE

---

# EASONOTE

## NEW WORDS(in picoctf)
tabcomplete:在terminal輸入文件名時 可以按tab自動補齊不需要全部手打
rambling:冗長的
wrangling:爭論
Scavenger:清道夫
prefix:前綴

## PICOCTF

### Local Authority
因為是web exploitation的題目 所以反手就是f12觀察網站的結構 一開始也沒什麼突破點 但在第一次亂碼輸入後發現新的網頁有一個secure.js 在點開檔案並觀察程式後發現 這個網站直接把判斷的程式碼洩漏出來 所以直接把username和passward複製並輸入後 便成功登入取得flag

### Inspect HTML
這道題目直接表明觀察html 所以在打開網頁後直接f12觀察 便發現flag直接註解在程式碼裡面

### Includes
因為有打過c語言 所以看到題目名字也不陌生 在打開f12後查看程式碼很快便發現兩段不完整的flag 再合併後就是真正的flag了

### runme(.py)
直接下載並打開程式碼就看到flag了

###  PW Crack 2
下載檔案後發現是一個py的程式碼 觀察一下程式碼很直觀的就能發現if的條件就是密碼 直接修改程式碼在輸入前列印出預設的密碼 就能得到flag
> ```py
> if user_pw == chr(0x33) + chr(0x39) + chr(0x63) + chr(0x65): 
> #chr()是py一個內建函數，用於將 Unicode 數值轉換為對應的字符。
> #ord()是chr()的逆運算
> ```

###  PW Crack 1
這個一樣是直接觀察py的程式碼就能發現密碼是多少 執行並輸入後就能得到flag了

###  HashingJobApp
再透過nc連接到伺服器後 顯示出prompt要我們輸入使用MD5加密過後的字串 持續依照prompt輸入後便能得到flag
> MD5加密是一種不可逆的加密演算法，不可逆加密演算法的特徵是加密過程中不需要使用金鑰，輸入明文後由系統直接經過加密演算法處理成密文，這種加密後的資料是無法被解密的，只有重新輸入明文，再次經過同樣不可逆的加密演算法處理，得到相同的加密密文並被系統重新識別後，才能真正解密。
> MD5（Message-Digest Algorithm 5）是一種廣泛使用的哈希函數，將任意長度的數據轉換為 128bits(32bytes)的固定長度散列值。

###  Glitch Cat
在透過nc連接到伺服器後終端顯示一段不完整的flag 中間夾雜加號和chr()的文字透過經驗猜測是py的程式 在py裡面使用print直接印出來便得到flag

###  fixme2(.py)
下載並觀察程式碼發現是if判斷式裡面要比較時 只使用一個= 再修改並執行程式便得到flag

###  fixme1(.py)
下載並觀察程式碼發現是print()前出現一個縮排 再修改並執行程式便得到flag

###  convertme(.py)
下載並直接執行程式後顯示要將十進位的31轉成二進位 打開電腦的小算盤並切換成程式設計人員模式 輸入31~(10)~便得到0001 1111~(2)~ 將這個結果輸入程式裡面便得到flag

###  Codebook
下載程式碼後打開vscode發現編譯器回報一個問題:正在覆寫stdlib模組"code" 在經過網路查詢後得知 這是一個來自Pylance或Pyright工具的警告:程式碼檔案名稱與py標準庫中的模組名稱發生了衝突 修改檔名並執行後便得到flag

###  Magikarp Ground Mission
這題其實題目名稱還是讓我有點不懂 magikarp在網路上面查是鯉魚王 ground mission可能是地面任務 所以合起來是鯉魚王的生死局? 反正按照題目下方的描述在bash輸入指令後 得知flag有三個部分需要依照提示去取得 總結這題是想要讓我們知道以下指令
> ```bash
> ls   #列出當前目錄的檔案與目錄
> cat  #查看、操作文字文件
> cd / #移動到root目錄
> cd ~ #移動到home目錄
> ```
### information
這題的flag藏在照片訊息裡面 但一開始真的沒有頭緒 所以上網觀摩其他人是如何解題後 才想到以前有用過一個工具exiftool 也可以用來處理照片並得到相關訊息 最後在圖片資訊的Current IPTC Digest和License發現兩個亂碼 因為picoctf經常用到base64解密 所以都嘗試過後發現license的亂碼可以解密出flag 特別想記錄的是因為我是使用win10 根據exiftool的使用說明 我是直接將單張圖片拉到執行檔上方來得到圖片資訊
> ExifTool 是一個功能強大的命令行工具，用於查看、編輯和刪除文件的元數據（Metadata）。由 Phil Harvey 開發和維護，支持多種文件格式，包括圖片、音樂、影片、PDF 等。
> 
> * 查看元數據，包括拍攝時間、相機設置、GPS 坐標、版權信息等。
> * 編輯元數據，如修改拍攝時間、相機信息、地理位置等。
> * 刪除元數據，如 GPS 信息、個人信息，以保護隱私。
> * 支持多種文件格式，包括圖片（JPEG、PNG、TIFF）、影片（MP4、MOV）、音樂（MP3、FLAC）、文檔（PDF、DOCX）等。
> * 批量處理
> * 可以對多個文件同時操作，非常高效。
> * 跨平台，支持 Windows、macOS 和 Linux。
> 
> 元數據（Metadata）是關於數據的數據，通常用來描述或提供關於其他數據的信息。元數據本身並不是數據的內容，而是關於數據的補充資訊，類似於一本書的目錄或封面上的簡介。
### Tab, Tab, Attack
這題主要是想介紹在tabcomplete的功能 就是在terminal按tab就可以自動輸入剩下的文字 不需要完整輸入的功能 在文件最裡面放一個檔案 透過file指令發現是一個執行檔 最後在使用./執行便得到flag 但有一點需要特別留意 因為檔案問題所以沒辦法在windows系統上的git bash作答 剛好學長設的進度就是架設linux虛擬機 最後還是得到flag了
> ```bash
> file  #得到文件類型
> ./execute  #./表示當前目錄 後面接.exe就是執行當前目錄中的.exe
> ```


## PICOCTF 1/9


### Cookies *
這題明顯是有關網站cookie有關 但在打開f12後看了很久 也沒甚麼進度便打開burp suitet嘗試抓包看看 第一次先輸入預設在輸入欄裡面的snikerdoodle 發現會抓到一個原網址後方加/search的url 而request中cookie後方name的值被設為-1 最下方的name會跟輸入的值一樣 通過後會再抓到前往原網址的請求 在之後幾次嘗試輸入後證實這個規律 
![image](https://hackmd.io/_uploads/Hkvd_P_Uyx.png)
![image](https://hackmd.io/_uploads/H1zLqwuI1l.png)
原本都一直在嘗試最下方的name但都沒結果 想了想在計算機中-1代表false可能是關閉的意思 便在兩種request中更改cookie的值為0 發現在指向原網址的request更改會新抓到一個原網址加/check的request 如果繼續把cookie改為0便出現新的網頁結果
![image](https://hackmd.io/_uploads/rJL42D_L1l.png)
![image](https://hackmd.io/_uploads/B1cU3wdUkx.png)
![image](https://hackmd.io/_uploads/r1U9nw_Ikl.png)
![image](https://hackmd.io/_uploads/BylJ6Du81e.png)
重複這個步驟並改為1 一樣有新的結果 持續到18便出現等了很久的flag了

### Wave a flag
這題一樣是需要在linux系統才能做的題目 下載檔案後先使用file測試文件類型 發現是執行檔後就使用./嘗試看看 但會發現沒有權限 所以這題主要是要介紹chmod指令更改權限
> ```bash
> chmod +x file.exe(sh)#change mod, 將file設置為可執行的模式
> ```
> 每個文件或目錄在 Linux 中都有 三種角色(who) 和 三種模式(mode)權限
> 
> | who  | 使用者類型   | 說明 |
> | ---- | ---------- | ---- |
> |u	|user	|檔案所有者|
> |g	|group	|檔案所有者所在組|
> |o	|others	|所有其他使用者|
> |a	|all	|所用使用者, 相當於 ugo|
> 
> | mode	 |名字	   |說明|
> | -------- | -------- | -------- |
> |r	|read	|設定為可讀權限|
> |w	|write	|設定為可寫權限|
> |x	|execute	|設定為可執行權限|
> |X	|特殊執行權限	|只有當檔案為目錄檔案，或者其他類型的使用者有可執行權限時，才將檔案權限設定可執行|
> |s	|setuid/gid	|當檔案被執行時，根據who參數指定的使用者類型設定檔案的setuid或者setgid權限|
> |t	|貼上位	|設定貼上位，只有超級使用者可以設定該位，只有檔案所有者u可以使用該位|
>  
> operator的符號模式表:
> 
> | operator | 說明 |
> | -------- | -------- |
> |+	|為指定的使用者類型增加權限|
> |-	|去除指定使用者類型的權限|
> |=	|設定指定使用者權限的設定，即將使用者類型的所有權限重新設定|

### Python Wrangling
根據題目描述這題就是要用python模擬在終端輸入參數的指令 所以只要照做就能得到flag
```python
usage_msg = "Usage: "+ sys.argv[0] +" (-e/-d) [file]"
#sys.argv用於接收從命令行傳遞給腳本的參數
```
```shell
python -u "c:\Users\eason\Desktop\Eason\ende.py" -d flag.txt.en
#print(sys.argv) 輸出['c:\\Users\\eason\\Desktop\\Eason\\ende.py', '-d', 'flag.txt.en']
```

### Static ain't always noise
這題目我其實也不是很懂 感覺像是靜態的甚麼東西不一定都是無法辨識的 反正直接把檔案載下來操作 先遇到權限問題使用chmod +x解決 再來是因為題目提供的腳本使用到不是系統預設的指令objdump 再透過指令下載後將目標文件作為參數傳入腳本 便會得到兩個檔案 一個是反組譯的txt 另一個是將字串分離出來的txt 在這個文件裡面便能找到flag
```bash
sudo apt install binutils
#objdump是binutils其中的一個工具 可以用來將.obj或.exe反組譯(disassembly)
```

### Scavenger Hunt *
這題雖然label是easy 但除了一開始 後面都是沒看過的新大陸 這題將flag分成5個部分 分別要從html css robots.txt .htaccess .DS_Store找到 前兩個都很簡單 但從第三個開始就不知道了 

題目題示要keep google from indexing my website 一開始以為是陣列的index 結果在上網查才知道是google的搜尋引擎 要讓google的爬蟲忽略自己的網站可以在要隱藏的網頁head置入noindex的meta tag 或是寫一份robots.txt並把這個文件放在伺服器根目錄 讓全部節點都生效 meta tag沒在html找到 所以改從原網址後方加上/robots.txt查看 便找到part 3

接下來提示是使用apache server 但根本想不到要從哪裡入手 上網看別人解題過程才學到一個叫.htaccess的東西 是apache server用來規範權限的設置文件 比如重新導向 改寫url 進用訪客造訪網址等 一樣要加在原網址後方 

最後提示是使用mac寫網頁 上網查一下發現mac的檔案會有一個隱藏文件DS_Store 可以用來儲存一些自定義屬性 一樣要加在原網址後方
http://mercury.picoctf.net:39491/

### Nice netcat...
我覺得這題主要是想要考驗寫腳本的程式能力 因為主要按照要求連上提供的伺服器就可以得到一串很像ascii code的東西 雖然可以一個一個查表但太累了 於是將資料複製出來並處理一下後 就可以透過腳本得到flag了 
```python=
flag_origin='112 105 99 111 67 84 70 123 103 48 48 100 95 107 49 116 116 121 33 95 110 49 99 51 95 107 49 116 116 121 33 95 55 99 48 56 50 49 102 53 125 10'
flag_ascii=flag_origin.split()
flag_final=''
for i in range(len(flag_ascii)):
    char=chr(int(flag_ascii[i]))
    flag_final+=char
print(flag_final)
```

### Obedient cat
這題就只是將檔案下載並在terminal用cat打開就可以得到flag了

### Mod 26
根據題目提示ROT13 並且下方有一段類似flag的文字 在上網查詢後得知rot13是一種加密和解密的方法 因為是將字母往後移動13位 所以加密和解密的結果都是一樣的 透過線上的工具就能得到flag

### GET aHEAD *
這題可以從題目名稱看出一些端倪 一開始用F12還沒看出什麼想法 打開burpsuite後發現兩個按鈕 一個是用GET一個是POST去請求資料 結合題目的提示有兩種以上的選擇 所以應該是用其他http method 將原本的request送到burpsuite的repeater後 將GET或POST改成HEAD 再send後就能得到flag 要注意的是HEAD要全大寫 不然辨識不出來
![image](https://hackmd.io/_uploads/Skm3P_iIke.png)
:point_down:截自: https://hackmd.io/@Not/HttpMethodIntro
![image](https://hackmd.io/_uploads/HyqFMuo8yg.png)

### Transformation
這題是有關encode的題型 先將檔案enc下載下來 並用file去看是甚麼文件類型 得知是utf-8的文件後就是編碼了 觀察題目下方給的程式碼 看起來是python 並且是將flag做類似加密的動作 將兩個字母各自轉成16進位的unicode編碼並合併起來 再轉成unicode字符 

接下來就是將enc中的文字透過cyberchef的escape unicode characters轉譯 然後複製起來讓解碼的腳本去處理
> unicode 識字符集的標準 幫文字和符號分配唯一的數字編碼
> utf-8 是一種可變長編碼 長度使用1到4個bytes 
```python=
# 加密過後的flag: 灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸弰㑣〷㘰摽
# 轉譯過後的unicode
enc_flag = "U+7069U+636FU+4354U+467BU+3136U+5F62U+6974U+735FU+696EU+7374U+3334U+645FU+6F66U+5F38U+5F30U+3463U+3037U+3630U+647DU+000DU+000A"
spilt_flag = enc_flag.split("U+")[1:-1]
flag = ""
for i in range(len(spilt_flag)):
    uni_1 = int(spilt_flag[i][:2], 16)
    uni_2 = int(spilt_flag[i][2:4], 16)
    flag += chr(uni_1) + chr(uni_2)
print(flag)
```

### 2WARM
這題就是將42~10~轉成00101010~2~ 


## OTHERS

### MALWARE
**WannaCry**是一種**勒索軟體**加**蠕蟲**的惡意軟體 由組織Shadow Brokers洩露 他們利用**zero-day**和**EternalBlue**漏洞和**DoublePulsar**後門 並且使用**AES-128**和**RSA**演算法加密文件勒索**BITCOIN**

有人發現wannacry包含一個不尋常的函數 它會查詢一個**當時不存在的網域** iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com 推測目的是讓malware檢測自己是不是在**sandbox**(虛擬機器和反惡意程式碼工具) sandbox為了盡可能模仿真實的電腦 當malware針對特定網域查詢時 會產生一個虛假的回應 因此如果malware對一個假的網域查詢並得到回應時 代表在sandbox裡面 malware會關閉自己避免被偵測到 最後存在wannacry內部硬編碼的網域被註冊後 每當有wannacry的複本查詢時 便會得到回覆並關閉自己 

:point_down: WannaCry實際行為 節自: https://ithelp.ithome.com.tw/articles/10253139
![tXu3AGv](https://hackmd.io/_uploads/r1RpUp3L1g.png)

> zero-day漏洞:未被發現的漏洞 因為當漏洞被發現時組織和開發者只有"zero day"去修復 所以被稱為zero-day :laughing: 
> 
> EternalBlue漏洞:由美國國家安全局（NSA）開發的網絡漏洞利用工具 利用windows os中**SMB(Server Message Block)協議**的漏洞 SMB是用來文件共享、網路通信的協議 但漏洞會導致未經授權的訪問、網路攻擊 並且通過PORT 445傳輸數據 
> 
> DoublePulsar後門:由美國國家安全局（NSA）開發的網絡漏洞利用工具 可以直接注入內存 不需要寫入硬碟 成功植入後可以遠端操控並下載malware
> 
> sinkholed: 這個網域被資安人員監控

### VirusTotal
一個免費的線上分析工具 可以來拿檢測文件或網址是否包含malware或virus 是google安全部門擁有和運營的 
website: https://www.virustotal.com/gui/home/upload

### IDA Pro
全名Interactive Disassembler Professional 是一個**靜態disassembly**的逆向工具 可以將可執行二進位檔案轉為asm 來研究內部程式碼

### Net Neighborhood
中文俗稱**網芳**

### 靜態分析流程  
:point_down:節自:https://ithelp.ithome.com.tw/m/articles/10359645
![rkeOTNV0C](https://hackmd.io/_uploads/SyDOna2L1g.png)
> crypto加密 hashes哈希 virus scan
> packer壓縮器 detection :arrow_forward: obfuscation混淆 check

### BAS
全名Breach and Attack Simulation入侵與攻擊突破模擬 

### Caldera 
一種BAS工具 由MITRE發行 可以自動化攻擊

### 常見資安比較
:point_down: 節自:https://feifei.tw/breach-and-attack-simulation/
![post-645-62a2edee1f985](https://hackmd.io/_uploads/r1gpERhL1x.png)
