引言
昨天學了 chmod
命令的用法,這邊大概整理幾個簡單用法:
$ chmod 參數 目標檔案
參數 | 簡介 |
---|---|
+x | 增加目前使用者對目標檔案執行權限 |
+r | 增加目前使用者對目標檔案讀取權限 |
+w | 增加目前使用者對目標檔案寫入權限 |
-x | 移除 目前使用者對目標檔案執行權限 |
-r | 移除 目前使用者對目標檔案讀取權限 |
-w | 移除 目前使用者對目標檔案寫入權限 |
範例
情境:
我在目前目錄創建檔案 pie
pie
然後嘗試 cat
它,可以正常讀取。
如果我想要移除它被讀取的權限,
$ chmod -r ./pie
然後再嘗試讀取,
$ cat pie
cat: pie: Permission denied
果然無法讀取。
其實這個命令還有許多關於使用者種類、群組等等的細節,
可以限定某些使用者可以但其他人不行的設定,
但這邊就暫不贅述。
General Skills / Nice netcat...
這題要引入一個新的、超好用的工具: nc (netcat)
這個工具可以讓你直接連接一個遠方主機,它向你送訊息、你也向它送訊息,這樣一個溝通工具,
仔細講它就是用來針對 TCP 、 UDP 兩種協定的傳輸,
反正白話講就是類似跟遠端電腦聊天、你一句我一句的感覺。
這個工具在 Linux 各種工具中常常在「最好用工具」榜單裡名列前茅,相當實用~
今天這題就要來第一次使用它看看。
題目要求先使用 nc 工具連上一個伺服器上的程式:
$ nc mercury.picoctf.net 7449
並且題目說該程式不會說英文,這是什麼意思?
我們先連上去就知道了:
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
102
50
100
55
99
97
102
97
125
10
結果程式跑出一堆數字,如果稍微寫過程式可能就會有點感覺,
這些數字八成是 ASCII code ,
每個字元都會對應一個數字,
如:
'a' 字元的 ASCII code 是 97
'A' 字元的 ASCII code 是 65
程式實際上是以這些數字來處理字元的。
所以這些數字實際上是字元的 ASCII code ,
我們可以寫一個 Python 程式將它們轉為字母:
# nice_nc.py
hile True:
try:
n = int(input())
print(chr(n), end='') # chr 會將 ASCII code 轉成字元
except:
print()
break
``
我們連上該伺服器後,利用 linux 的[管線](https://zh.wikipedia.org/wiki/%E7%AE%A1%E9%81%93_(Unix)) (pipe) ,
將 nc 的輸出當作 python 程式的輸入,直接轉換成字母並印出來,
flag 就出現了:
```shell
$ nc mercury.picoctf.net 7449 | python nice_nc.py
picoCTF{g00d_k1tty!_n1c3_k1tty!_f2d7cafa}
注意程式印出 flag 後不會結束,會等待輸入,
此時只要 Ctrl+D (代表 EOF ,意為檔案的結尾 End of File) 結束即可。
已解決: 先按esc後,:wq(write and quit)存檔離開
想請問Python部分是用vim然後按i插入進去嗎? 我是這樣用但按esc無法escape,最後只能用線上轉換ascii。