Hack The Vote 2016

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


記事検索
ギャラリー
  • 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
カテゴリー