CpawCTF write up(Level2)

CpawCTF解法メモ。
CTF初心者です。
# Q13.[Stego]隠されたフラグ
###### 100pt

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

よく見ると画像の左上と右下に黒い点々がある。
これはモールス信号になっているので、復号すればよい。
[何でもモールス信号変換](http://morse.ariafloat.com/)という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.js`、`bootstrap.css`、`bootstrap-responsive.css`、`image.jpg`を取り込んでいるコードがあるが、パスがあっていないようである。

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

# Q17.[Recon]Who am I ?
###### 100pt
### 問題
僕(twitter:@porisuteru)はスペシャルフォース2をプレイしています。 
とても面白いゲームです。 
このゲームでは、僕は何と言う名前でプレイしているでしょう！ 
フラグはcpaw{僕のゲームアカウント名}です。
### 解法
アカウント名とゲーム名でググると該当のツイートが出てくる。

# Q18.[Forensic]leaf in forest
###### 100pt
### 問題
このファイルの中にはフラグがあります。探してください。 
フラグはすべて小文字です！ 
### 解法
fileを開くとやたらと`lovelive!`というワードが並んでいる。
そしてたまに微妙に違う単語が混じっているので、まずは`lovelive!`というワードを全て削除した。
すると、大文字の微妙に違う単語は３連続の文字で`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とかしてるので、
`pwd`、`passive`、`ls`などしてみるとdummyファイルが出てくる。
dummyと書いている時点で怪しすぎるので、`ls -a`すると `.hidden_flag_file`なる隠しファイルが見つかった。
`get .hidden_flag_file`でダウンロードしてきて、中身をチェックするとflagゲット。