TCPサーバの接続情報と、ELFファイル hellothere
が与えられた。
このファイルをobjdump
で逆アセンブルすると、main
関数において、
./flag.txt
の内容を-0x30(%rbp)
に読み込んだ後、
入力を-0x50(%rbp)
に読み込んでprintf
関数の第1引数に渡しているのが読みとれた。
Information to connect to a TCP server and a ELF file hellothere
were given.
Disassembling this file via objdump
in main
reads the contents of ./flag.txt
to -0x30(%rbp)
,
and then read some input to -0x50(%rbp)
and pass the input as the first argument of the function printf
.
When I gave this as an input:
を入力として与えると、
This was printed:
が出力され、入力した内容が8番目以降のデータとして使われていることが読み取れた。
さらに、./flag.txt
の内容は入力の0x20バイト先に格納されており、これは1個8バイトの要素4個分である。
これを踏まえ、以下を入力として与えた。
This implies that the input data is used as the 8th data and later.
Moreover, the contents of ./flag.txt
is stored 0x20 bytes ahead from the input. This is a room for four 8-byte elements.
Based on these, I gave this as an input:
すると、以下が出力された、
As a result, this was printed:
得られた出力を以下の
I obtained the flag by converting this output via this Recipe on
Fork, Find / Replace, From Hex, Reverse - CyberChef