遂にcpawCTFを始める

#Level1 Q9 Web

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

ということで、潜ったところ、
![スクリーンショット (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835258/6b5ee560-ae1c-cb48-5568-38d9d43ebea5.png)

そう簡単にはいかないよね・・・ということで
　HTMLのソースコードに隠されているのか？と推測、早速F12開発者ツールで確認。
![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835258/df3217cd-cef2-ca70-f4d9-ae2a3cfa52de.png)

ビンゴです！

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

与えられたファイルの種類を見てみると、""ファイル""とだけ書かれている。知っとるわい！
ということでLinuxのflieコマンドを実行
```
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
```
ということで、さっぱりわかりません。が、ELFとはxecutable and Linking Formatというバイナリ形式のファイルのことらしいです。この文字の羅列だけでは全く意味が分からないですし、見づらいので、以下のコマンドを実行します
```
readelf -h exec_me
ELF ヘッダ:
  マジック:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  クラス:                            ELF64
  データ:                            2 の補数、リトルエンディアン
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI バージョン:                    0
  型:                                EXEC (実行可能ファイル)
  マシン:                            Advanced Micro Devices X86-64
  バージョン:                        0x1
  エントリポイントアドレス:               0x400440
  プログラムヘッダ始点:          64 (バイト)
  セクションヘッダ始点:          4504 (バイト)
  フラグ:                            0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:64 (bytes)
  Number of section headers:         30
  Section header string table index: 27
```
ELFヘッダをこのように表示できます。（今知った）
ですが、あまり関係ありませんでした。
次に
```
./ exec_me
```
しかし権限がないと怒られる。
```
chmod 777 exec_me
```
解放！！
```
./ exec_me
```
実行するとフラグが出てきます。ふわ～～意外と時間かかった。。。
chmodコマンドは数字を三つ指定できるらしく、とりあえず777にしとけば最強ということを学びました。

#Level1 Q14 PPC
 **問題文**
>下にある配列の中身を大きい順に並べ替えて、くっつけて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]

```Java:sort.java
	public static void main(String[] args) {
		int[] array = { 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 };
		int max = 0;
		int j = 0;
		System.out.print("cpaw{");
		while (j < array.length) {
			for (int i = j; i < array.length; i++) {
				//並べ替え
				if (max < array[i]) {
					max = array[i];
					array[i] = array[j];
					array[j] = max;
				}
			}
			System.out.print(array[j]);
			j++;
			max = 0;
		}
		System.out.print("}");
	}
}
```
可読性０であります。許してください。クイックソートでやりました。
コンソールに出力されたテキストをそのままペーストしてポイントゲットです！
※数字ごとにコンマを打っていて最初は自分のコードが間違っていたのかと長考したのはここだけの秘密。
Level1でちょっと時間かかったのはこの３問だけでした。これからも精進します。
Linuxコマンド覚えたほうがいいなこれ・・・ではここで失礼します。