CpawCTF write up(Level1)

CpawCTF解法メモ。
CTF初心者です。
# Q1.[Misc] Test Problem
###### 10pt

#### 問題
この問題の答え（FLAG）は、cpaw{this_is_Cpaw_CTF} です。 
下の入力欄にFLAGを入力してSubmitボタンを押して、答えを送信しましょう！ 

Enjoy CpawCTF!!!!


###解法

cpaw{this_is_Cpaw_CTF}をコピペ


# Q6.[Crypto] Classical Cipher 
###### 10pt

2問目がQ6となってるらしい。2~5はボツになったんだろうな。

#### 問題
暗号には大きく分けて、古典暗号と現代暗号の2種類があります。特に古典暗号では、古代ローマの軍事的指導者ガイウス・ユリウス・カエサル（英語読みでシーザー）が初めて使ったことから、名称がついたシーザー暗号が有名です。これは3文字分アルファベットをずらすという単一換字式暗号の一つです。次の暗号文は、このシーザー暗号を用いて暗号化しました。暗号文を解読してフラグを手にいれましょう。 

暗号文: fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}

###解法
f : (→e→d→)c
s : p
d : a
.
.
.

という風に全ての文字を3文字分ずらせば良い。
シーザー暗号でググればシェルのコマンドやpythonのコードが転がっているから使うのもアリ。

# Q7.[Reversing] Can you execute ?
###### 10pt
#### 問題
拡張子がないファイルを貰ってこのファイルを実行しろと言われたが、どうしたら実行出来るのだろうか。 
この場合、UnixやLinuxのとあるコマンドを使ってファイルの種類を調べて、適切なOSで実行するのが一般的らしいが… 
問題ファイル： exec_me

###解法
とりあえずファイルをダウンロードして、ターミナルで `file exec_me`すると
```
exec_me: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=663a3e0e5a079fddd0de92474688cd6812d3b550, not stripped
```
とのことなので、どうやら64bitのlinux環境で実行できるものらしい。
Linux環境で`sudo chmod 777 exec_me; ./exec_me`でOK

# Q8.[Misc] Can you open this file ?
###### 10pt
#### 問題
このファイルを開きたいが拡張子がないので、どのような種類のファイルで、どのアプリケーションで開けば良いかわからない。 
どうにかして、この拡張子がないこのファイルの種類を特定し、どのアプリケーションで開くか調べてくれ。 
問題ファイル： open_me

###解法
前問同様、ファイルをダウンロードして、ターミナルで `file open_me`すると
```
open_me: Composite Document File V2 Document, Little Endian, Os: Windows, Version 10.0, Code page: 932, Author: ?v??, Template: Normal.dotm, Last Saved By: ?v??, Revision Number: 1, Name of Creating Application: Microsoft Office Word, Total Editing Time: 28:00, Create Time/Date: Mon Oct 12 04:27:00 2015, Last Saved Time/Date: Mon Oct 12 04:55:00 2015, Number of Pages: 1, Number of Words: 3, Number of Characters: 23, Security: 0
```
Microsoft Office Word　と書いてある。
`右クリック　→ アプリケーションから開く`でWordで開いたらFlagゲット
ubuntuのlibreofficeでもいける

# Q9.[Web] HTML Page
###### 10pt
#### 問題
HTML(Hyper Text Markup Language)は、Webサイトを記述するための言語です。 
ページに表示されている部分以外にも、ページをより良くみせるためのデータが含まれています。 
次のWebサイトからフラグを探して下さい。 
http://q9.ctf.cpaw.site 

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

###解法
ブラウザのDeveloper toolsを用いてソースコードをみる。
じっくり探すとflagが書いてある。

# Q10.[Forensics] River
###### 10pt
#### 問題
JPEGという画像ファイルのフォーマットでは、撮影時の日時、使われたカメラ、位置情報など様々な情報(Exif情報)が付加されることがあるらしい。 
この情報から、写真に写っている川の名前を特定して欲しい。 
問題ファイル： river.jpg 

FLAGの形式は、"cpaw{river_name}" 
例：隅田川 → cpaw{sumidagawa}

###解法
EXIF情報を読み取り、緯度と経度からこの川の場所を探す。
[EXIF確認君](http://exif-check.org/)というWebサービスを使うとマップで場所を示してくれるので便利。

# Q11.[Network]pcap
###### 10pt
#### 問題
ネットワークを流れているデータはパケットというデータの塊です。 
それを保存したのがpcapファイルです。 
pcapファイルを開いて、ネットワークにふれてみましょう！ 
pcapファイル

###解法
[WireShark](https://www.wireshark.org/)を用いてpcapファイルを見ればいい


# Q12.[Crypto]HashHashHash!
###### 10pt
#### 問題
ハッシュ関数とは、値を入れたら絶対にもとに戻せないハッシュ値と呼ばれる値が返ってくる関数です。 
ですが、レインボーテーブルなどでいくつかのハッシュ関数は元に戻せてしまう時代になってしまいました。 
以下のSHA1というハッシュ関数で作られたハッシュ値を元に戻してみてください！（ヒント：googleで検索） 

e4c6bced9edff99746401bd077afa92860f83de3 

フラグは 
cpaw{ハッシュを戻した値} 
です。

###解法
[Hash Sha1: Encryption and reverse decryption](https://md5hashing.net/hash/sha1/)などのWebサービスでSHA1のハッシュ値をデコードできる。

# Q12.[Crypto]HashHashHash!
###### 10pt
#### 問題
ハッシュ関数とは、値を入れたら絶対にもとに戻せないハッシュ値と呼ばれる値が返ってくる関数です。 
ですが、レインボーテーブルなどでいくつかのハッシュ関数は元に戻せてしまう時代になってしまいました。 
以下のSHA1というハッシュ関数で作られたハッシュ値を元に戻してみてください！（ヒント：googleで検索） 

e4c6bced9edff99746401bd077afa92860f83de3 

フラグは 
cpaw{ハッシュを戻した値} 
です。

###解法
[Hash Sha1: Encryption and reverse decryption](https://md5hashing.net/hash/sha1/)などのWebサービスでSHA1のハッシュ値をデコードできる。

# Q14.[PPC]並べ替えろ!
###### 10pt
#### 問題
下にある配列の中身を大きい順に並べ替えて、くっつけてcpaw{並べ替えた後の値}をフラグとして提出してください。 
例：もし配列｛1,5,3,2｝っていう配列があったら、大きい順に並べ替えると｛5,3,2,1}となります。 
そして、フラグはcpaw{5321}となります。 
同じようにやってみましょう（ただし量が多いので、ソートするプログラムを書いたほうがいいですよ！） 


[15,1,93,52,66,31,87,0,42,77,46,24,99,10,19,36,27,4,58,76,2,81,50,102,33,94,20,14,80,82,49,41,12,143,121,7,111,100,60,55,108,34,150,103,109,130,25,54,57,159,136,110,3,167,119,72,18,151,105,171,160,144,85,201,193,188,190,146,210,211,63,207]

###解法
ソートするコードを書くだけ
例

```sort.py
list = [問題の配列]
for i in sorted(list, reverse=True):
    print(i, end="")
```