picoCTF - More Cookies 150 points

Cookies 的進階題,還有一個同名版本是 2021 年的 More Cookies 90 points 但那題感覺難上很多。

這次作者有提供 server 的 source code ,簡單來說就是直接 Open Book,他使用了一套叫做 Flask 的 Web framework。

服務啟動會隨機挑選餅乾名當作 Secret key,當使用 Session 時,去產生出加密後的 Cookies。

所以我們先照慣例,直接搜尋 snickerdoodle,從開發者模式取得 Cookie,原本想自己照他的模式,寫類似的 python 來跑,不過從 Google 發現這個有人已經寫出加解密套件。

GitHub - noraj/flask-session-cookie-manager: Flask Session Cookie Decoder/Encoder

cookies=(a b c)

for i in "${cookies[@]}"; do echo "$i"; python ./flask_session_cookie_manager3.py decode -s "$i" -c [cookies]; done

順利的話會找到對應的 Secret key,也可以稍微看一下解密出來的明文的樣子,再把內文改成 admin,再用 Key 拿去加密,組成 Cookies 回寫瀏覽器就解了。

picoCTF - Cookies

這一題標題就非常明示的,這是跟 Cookies 有關係。 打開網址首先會看到一個輸入框跟搜尋按鈕,輸入框裡還有 placeholder 寫著 snickerdoodle。直接輸入 snickerdoodle

會出現 I love snickerdoodle cookies!

打開瀏覽器開發工具,找出 Cookies 會發現寫了一筆 name = 0 的 Cookie ,以此類推,可能會有 1, 2, 3... 的 cookies。

接下來 curl 是工程師的好朋友,寫一隻 Shell Script。因為 Flag 有某些特徵,所以我用 Grep 去過濾掉不要的資訊。

#!/bin/bash

set -B
for i in {0..28}; do
  curl -v --silent 'http://picoctf/check' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Referer: http://picoctf/check' -H 'Cookie: name='$i -H 'Upgrade-Insecure-Requests: 1' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' 2>&1 | grep pico
done

這題分數雖然不高,其實也真的不難,但寫 Shell Script 蠻有趣的。

自行升級 Docker

最近遇到一個 Bug,實際追下去後才發現是 AWS 提供的 Docker 版本不是最新的。Docker 網站有提供編譯好的執行檔,可以直接下載覆蓋原有執行檔,之後套件更新也會一併升上去。

$ wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz
$ tar zxvf docker-20.10.7.tgz
$ sudo cp docker-20.10.7/docker /usr/bin/docker

暴力破解加密的 dmg

首先先安裝 john-jumbo

$ brew install john-jumbo

先產生 hashes,注意程式版本是否不同

$ /usr/local/Cellar/john-jumbo/1.9.0/share/john/dmg2john target.dmg > target.dmg.hash

開始暴力破解

$ john target.dmg.hash

如果明確知道密碼組成,可以使用 --mask

$ john --mask="[0-9a-z][0-9a-z][0-9a-z]" target.dmg.hash

如果要多開 processes,可以使用 --fork,最高不要超過 CPU Core 數

$ john --fork=8 target.dmg.hash

DNS Override in DHCP Mode

原因是 Vultr DNS 會不定期爛掉,一個新的 instance 預設是 DHCP。發 Ticket 去問客服,他會教你如何採用固定 IP 配置。 不過如果不想跟客服周旋,可以自己 Override DNS 設定。

$ cat /etc/network/interfaces # 確認 interface
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

#source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug ens3
iface ens3 inet dhcp
iface ens3 inet6 auto
$ vi /etc/dhcp/dhclient.conf # 修改 DHCP 設定
interface "ens3" {
    supersede domain-name-servers 1.1.1.1, 1.0.0.1;
}
$ reboot && cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 1.1.1.1
nameserver 1.0.0.1

Miniflux 自建 RSS 閱讀器服務

在 Google Reader 收攤後,我後來嘗試了不少的 RSS 閱讀器服務,FeedlyFlipboardFeedspot。嚴格來說 Flipboard 不算是 RSS 閱讀器,比較像是社群內容雜誌,但不可否認的它是個好 APP,以前甚至為了 Flipboard 買 iPad。Feedspot 感覺介面很像 Google Reader,又有計劃推出 iOS APP,中間有推出終生 Gold 方案,我也購買了。Gold 只差在通知,可以自訂時間區間而已,真的蠻雞肋的,有些 Bug 回報,官方似乎沒在維護,iOS APP. 也難產,讓我一直有想出走的想法,爾後又接觸到 Tiny Tiny RSS、FreshRSSMiniflux

Read more  ↩︎