1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

遂にcpawCTFを始める

Posted at

#Level1 Q9 Web

 問題文

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

ということで、潜ったところ、
スクリーンショット (2).png

そう簡単にはいかないよね・・・ということで
 HTMLのソースコードに隠されているのか?と推測、早速F12開発者ツールで確認。
スクリーンショット (3).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]

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("}");
	}
}

可読性0であります。許してください。クイックソートでやりました。
コンソールに出力されたテキストをそのままペーストしてポイントゲットです!
※数字ごとにコンマを打っていて最初は自分のコードが間違っていたのかと長考したのはここだけの秘密。
Level1でちょっと時間かかったのはこの3問だけでした。これからも精進します。
Linuxコマンド覚えたほうがいいなこれ・・・ではここで失礼します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?