CTF
CpawCTF

CpawCTF write up(Level2)

CpawCTF解法メモ。
CTF初心者です。

Q13.[Stego]隠されたフラグ

100pt

問題

以下の画像には、実はフラグが隠されています。
目を凝らして画像を見てみると、すみっこに何かが…!!!!
フラグの形式はcpaw{***}です。フラグは小文字にしてください。
stego100.jpg

解法

よく見ると画像の左上と右下に黒い点々がある。
これはモールス信号になっているので、復号すればよい。
何でもモールス信号変換というWebサービスが便利

Q15.[Web] Redirect

100pt

問題

このURLにアクセスすると、他のページにリダイレクトされてしまうらしい。
果たしてリダイレクトはどのようにされているのだろうか…
http://q15.ctf.cpaw.site

※この問題のサーバへの攻撃はお止め下さい

解法

Developer toolsでNetworkタブでq15.ctf.cpaw.siteのHeadersを見ると
Response headerのX-Flagにflagが隠されている。

Q16.[Network+Forensic]HTTP Traffic

100pt

問題

HTTPはWebページを閲覧する時に使われるネットワークプロトコルである。
ここに、とあるWebページを見た時のパケットキャプチャファイルがある。
このファイルから、見ていたページを復元して欲しい。
http_traffic.pcap

解法

Wiresharkには便利な機能があって、ファイル→オブジェクトをエクスポートとすると
通信しているファイルを抜き出せる。
HTTPを選んで抜き出すと、network100(1)がhtmlのソースコードとなっている。
これの拡張子をhtmlに変更して実行するとwebページが開く。

フラグが欲しかったら下のボタンを押すんだ!!

と書いてあるが、ボタンなど見当たらない。
ソースコードを見直すと、

<script src="./js/button2.js"></script>
<link href="./css/bootstrap.css" rel="stylesheet">
<link href="./css/bootstrap-responsive.css" rel="stylesheet">
<p><img id="image1" class="img-rounded" id="image1" src="./img/image.jpg"/></p>

といった箇所でbutton2.jsbootstrap.cssbootstrap-responsive.cssimage.jpgを取り込んでいるコードがあるが、パスがあっていないようである。

jsというフォルダを作成してbutton2.jsをそこに移動
cssというフォルダを作成してbootstrap.cssbootstrap-responsive.cssをそこに移動
imgも同様
とするとボタンが現れる。

Q17.[Recon]Who am I ?

100pt

問題

僕(twitter:@porisuteru)はスペシャルフォース2をプレイしています。
とても面白いゲームです。
このゲームでは、僕は何と言う名前でプレイしているでしょう!
フラグはcpaw{僕のゲームアカウント名}です。

解法

アカウント名とゲーム名でググると該当のツイートが出てくる。

Q18.[Forensic]leaf in forest

100pt

問題

このファイルの中にはフラグがあります。探してください。
フラグはすべて小文字です!

解法

fileを開くとやたらとlovelive!というワードが並んでいる。
そしてたまに微妙に違う単語が混じっているので、まずはlovelive!というワードを全て削除した。
すると、大文字の微妙に違う単語は3連続の文字でlovelive!の一部を置き換えたもののようである。
それらの文字を見てみると最初の数文字を見てcpaw...となっているのでこれがflagだと確信。
小文字に直してflagゲット。

Q19.[Misc]Image!

100pt

問題

Find the flag in this zip file.
file

解法

zipを解凍すると、xmlファイルとかが色々出てくる。
とりあえずmimetypeというテキストを見てみると
application/vnd.oasis.opendocument.graphicsと書いてある。
ググってみるとopen document formatというものらしい。
openoffice.orgの文書ドキュメントらしいので、LibreofficeのWriterで開いてみると、flagゲット。

Q20.[Crypto]Block Cipher

100pt

問題

与えられたC言語のソースコードを読み解いて復号してフラグを手にれましょう。

暗号文:cpaw{ruoYced_ehpigniriks_i_llrg_stae}

crypto100.c

解法

ソースコードは以下の通り。

crypto100.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]){
  int i;
  int j;
  int key = atoi(argv[2]);
  const char* flag = argv[1];
  printf("cpaw{");
  for(i = key - 1; i <= strlen(flag); i+=key) for(j = i; j>= i - key + 1; j--) printf("%c", flag[j]);
  printf("}");
  return 0;
}

コマンドライン引数の一つ目をflag、二つ目をkeyにして処理を行って出力するらしい。

とりあえず暗号文の中身を一つ目、適当な数字を二つ目に渡して実行して行くと、key = 4で意味の通る文書になる。

Q21.[Reversing]reversing easy!

100pt

問題

フラグを出す実行ファイルがあるのだが、プログラム(elfファイル)作成者が出力する関数を書き忘れてしまったらしい…
reverse100

解法

strings rev100 | grep cpaw でflagを探すとD$Fcpawfという文字列がヒットする。
この付近にflagがあるのではと
strings rev100 | grep -A 20 cpawとしてその後の20行をのぞいてみるとビンゴ。

Q22.[Web]Baby's SQLi - Stage 1-

100pt

問題

困ったな……どうしよう…….
ぱろっく先生がキャッシュカードをなくしてしまったショックからデータベースに逃げ込んでしまったんだ.
うーん,君SQL書くのうまそうだね.ちょっと僕もWeb問作らなきゃいけないから,連れ戻すのを任せてもいいかな?
多分,ぱろっく先生はそこまで深いところまで逃げ込んで居ないと思うんだけども…….

とりあえず,逃げ込んだ先は以下のURLだよ.
一応,報酬としてフラグを用意してるからよろしくね!

https://ctf.spica.bz/baby_sql/

Caution
・sandbox.spica.bzの80,443番ポート以外への攻撃は絶対にしないようにお願いします.
・あなたが利用しているネットワークへの配慮のためhttpsでの通信を推奨します.

解法

どうやらぱろっく先生は「palloc_home」というテーブルの2番目にいるようです.

とのことなので普通にSQL文を叩くだけ。

select * from palloc_home limit 2でよい。

Q28.[Network] Can you login?

100pt

問題

古くから存在するネットワークプロトコルを使った通信では、セキュリティを意識していなかったこともあり、様々な情報が暗号化されていないことが多い。そのため、パケットキャプチャをすることでその情報が簡単に見られてしまう可能性がある。
次のパケットを読んで、FLAGを探せ!
network100.pcap

解法

とりあえずWireSharkで見てみる。
FTPでフィルターするとパスワードなどがそのまま通信されているのがわかる。
ftp 157.7.52.186でアクセスし、ユーザ名、パスワードを打ち込むとログイン成功。
pcapファイルにはPWDとかEPSVとかLISTとかしてるので、
pwdpassivelsなどしてみるとdummyファイルが出てくる。
dummyと書いている時点で怪しすぎるので、ls -aすると .hidden_flag_fileなる隠しファイルが見つかった。
get .hidden_flag_fileでダウンロードしてきて、中身をチェックするとflagゲット。