ELFファイルprogram
、IPv4アドレスとポート番号、そしてUsernameとPasswordが与えられた。
これらの情報を利用し、
サーバには以下のファイルが配置されていた。
ここのファイルprogram
は、与えられたファイルprogram
と同じであると予想できる。
また、ファイルflag.txt
およびkeyfile
は、直接読むことはできないが、program
からは参照できるようである。
An ELF file program
, a pair of an IPv4 address and a port number, an Username, and a Password were given.
With these information, a server was available to be connected via SSH with
There are these files on the server.
The file program
on the server should be the same as the given file program
.
Also, I cannot read the files flag.txt
and keyfile
directly, but they looked available from program
.
program
を
keyfile
のデータと時刻から鍵とIVを生成し、flag.txt
の内容をAESで暗号化した結果を出力するようである。
Decompiling program
via
This program generates a key and IV from the contents of keyfile
and the time,
encrypts the contents of flag.txt
, and prints the ciphertext.
mv
コマンドによるkeyfile
の名前変更は可能だったので、
以下のようにしてkeyfile
を既知の内容のものに差し替え、時刻を確認しながら暗号文を出力させた。
It was possible to rename the keyfile
via mv
command,
so I changed keyfile
to a file with known contents and had it print ciphertext with checking the time.
表示された時刻をもとに、日付⇒UNIX時間変換 - 高精度計算サイトで鍵とIVの生成に使う値の一部を求めた。
これを利用し、以下のプログラムであり得る全ての鍵とIVを出力させた。
Based on the displayed time, I used Convert Date & Time to Unix timestamp Calculator - High accuracy calculation
to obtain a part of the value to be used for generating a key and IV.
Using this value, I used following program to generate all possible pairs of the key and IV.
このプログラムの出力を利用し、以下のプログラムでAESの復号を行った。
Using the output of this program, I used following program to decrypt AES.
このプログラムの出力からテキストエディタでractf
を検索することで、flagが得られた。
I obtained the flag by searching for ractf
via a text editor from the output of this program.