ångstromCTF 2019

ångstromCTF 2019 writeup One Bite

One Bite

Rev
60
465

Whenever I have friends over, I love to brag about things that I can eat in a single bite. Can you give this program a tasty flag that fits the bill?

/problems/2019/one_bite

ダウンロードしたファイルをobjdumpコマンドで逆アセンブルします。
$ objdump -s -D -M intel one_bite >aaa.txt
入力文字列を1文字ずつ0x3cとXORを取っています。その値と文字列比較しています。
  4006fa: 83 f0 3c              xor    eax,0x3c #
(略)
  400723: 48 c7 45 b8 20 08 40 mov    QWORD PTR [rbp-0x48],0x400820 #]_HZGUcHTURWcUQc[SUR[cHSc^YcOU_WA
  40072a: 00 
  40072b: 48 8b 55 b8          mov    rdx,QWORD PTR [rbp-0x48]
  40072f: 48 8d 45 c0          lea    rax,[rbp-0x40]
  400733: 48 89 d6              mov    rsi,rdx
  400736: 48 89 c7              mov    rdi,rax
  400739: e8 52 fe ff ff        call   400590 <strcmp@plt>
Pythonでプログラムを書いて元の文字列を求めます。
s = ']_HZGUcHTURWcUQc[SUR[cHSc^YcOU_WA'
key = 0x3c
flag = ''
for c in s:
flag += chr(ord(c) ^ key)
print(flag)
実行するとフラグになります。
フラグは、
actf{i_think_im_going_to_be_sick}
です。

論理回路講義ノート
工藤 栄亮
コロナ社
2018-08-25


ångstromCTF 2019 writeup Intro to Rev

Intro to Rev

Rev
10
895

Many of our problems will require you to run Linux executable files (ELFs). This problem will help you figure out how to do it on our shell server. Use your credentials to log in, then navigate to /problems/2019/intro_to_rev. Run the executable and follow its instructions to get a flag!

Shellでサーバに接続します。次のとおりコマンドを実行するとフラグが表示されます。
$ cd /problems/2019/intro_to_rev
$ ls
flag.txt  intro_to_rev
$ ./intro_to_rev
Welcome to your first reversing challenge!

If you are seeing this, then you already ran the file! Let's try some input next.
Enter the word 'angstrom' to continue:
angstrom
Good job! Some programs might also want you to enter information with a command line argument.

When you run a file, command line arguments are given by running './introToRev argument1 argument2' where you replace each argument with a desired string.

To get the flag for this problem, run this file again with the arguments 'binary' and 'reversing' (don't put the quotes).

$ ./intro_to_rev binary reversing
Welcome to your first reversing challenge!

If you are seeing this, then you already ran the file! Let's try some input next.
Enter the word 'angstrom' to continue:
angstrom
Good job! Some programs might also want you to enter information with a command line argument.

When you run a file, command line arguments are given by running './introToRev argument1 argument2' where you replace each argument with a desired string.

Good job, now go solve some real problems!
actf{this_is_only_the_beginning}
フラグは、
actf{this_is_only_the_beginning}

ångstromCTF 2019 writeup I Like It

I Like It

Rev
40
549

Now I like dollars, I like diamonds, I like ints, I like strings. Make Cardi like it please.

/problems/2019/i_like_it

ダウンロードしたファイルをobjdumpコマンドで逆アセンブルします。
$ objdump -s -D -M intel i_like_it >aaa.txt
最初の入力値は”okrrrrrrr”と比較しています。
  4007ff: be a1 09 40 00        mov    esi,0x4009a1 #okrrrrrrr
  400804: 48 89 c7              mov    rdi,rax
  400807: e8 64 fe ff ff        call   400670 <strcmp@plt>
次の入力値は2つの整数値で足して136、掛けて3783になる数値で1つ目の数値のほうが小さいものです。したがって39と97です。
  40086e: 8b 55 c8              mov    edx,DWORD PTR [rbp-0x38]
  400871: 8b 45 cc              mov    eax,DWORD PTR [rbp-0x34]
  400874: 01 d0                add    eax,edx
  400876: 3d 88 00 00 00        cmp    eax,0x88 #足して136
  40087b: 75 1a                jne    400897 <main+0xf1>
  40087d: 8b 55 c8              mov    edx,DWORD PTR [rbp-0x38]
  400880: 8b 45 cc              mov    eax,DWORD PTR [rbp-0x34]
  400883: 0f af c2              imul   eax,edx
  400886: 3d c7 0e 00 00        cmp    eax,0xec7 #掛けて3783
  40088b: 75 0a                jne    400897 <main+0xf1>
  40088d: 8b 55 c8              mov    edx,DWORD PTR [rbp-0x38]
  400890: 8b 45 cc              mov    eax,DWORD PTR [rbp-0x34]
  400893: 39 c2                cmp    edx,eax #1つ目のほうが小さい
Shellページでサーバに接続します。
$ ./i_like_it
I like the string that I'm thinking of:
okrrrrrrr
I said I like it like that!
I like two integers that I'm thinking of (space separated):
39 97
I said I like it like that!
Flag: actf{okrrrrrrr_39_97}
フラグは、
actf{okrrrrrrr_39_97}

ångstromCTF 2019 writeup Classy Cipher

Classy Cipher

Crypto
20
678

Every CTF starts off with a Caesar cipher, but we're more classy.

復号するPythonプログラムを書きます。
def decrypt(d, s):
e = ''
for c in d:
e += chr((ord(c) + 0xff - s) % 0xff)
return e
print(decrypt(':<M?TLH8<A:KFBG@V', ord(':') + 0xff - ord('a')))
フラグは、
actf{so_charming}
です。



ångstromCTF 2019 writeup High Quality Checks

High Quality Checks

Rev
110
225

After two break-ins to his shell server, kmh got super paranoid about a third! He's so paranoid that he abandoned the traditional password storage method and came up with this monstrosity! I reckon he used the flag as the password, can you find it?

ダウンロードしたファイルをobjdumpコマンドで逆アセンブルします。
$ objdump -s -D -M intel high_quality_checks >aaa.txt
<check>関数の中でさらに関数を呼び出して入力文字列をチェックしています。
000000000040094a <check>:
  40094a: 55                    push   rbp
  40094b: 48 89 e5              mov    rbp,rsp
  40094e: 48 83 ec 08          sub    rsp,0x8
  400952: 48 89 7d f8          mov    QWORD PTR [rbp-0x8],rdi
  400956: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  40095a: 48 83 c0 0c          add    rax,0xc
  40095e: 48 89 c7              mov    rdi,rax
  400961: e8 7f ff ff ff        call   4008e5 <d> #12文字目からc710
  400966: 85 c0                test   eax,eax
  400968: 0f 84 e6 00 00 00    je     400a54 <check+0x10a>
  40096e: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400972: 0f b6 00              movzx  eax,BYTE PTR [rax]
  400975: 0f be c0              movsx  eax,al
  400978: 89 c7                mov    edi,eax
  40097a: e8 d4 fc ff ff        call   400653 <v> #0文字目がa
  40097f: 85 c0                test   eax,eax
  400981: 0f 84 cd 00 00 00    je     400a54 <check+0x10a>
  400987: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  40098b: 48 83 c0 11          add    rax,0x11
  40098f: 0f b6 00              movzx  eax,BYTE PTR [rax]
  400992: 0f be d0              movsx  edx,al
  400995: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400999: 48 83 c0 10          add    rax,0x10
  40099d: 0f b6 00              movzx  eax,BYTE PTR [rax]
  4009a0: 0f be c0              movsx  eax,al
  4009a3: 89 d6                mov    esi,edx #17文字目
  4009a5: 89 c7                mov    edi,eax #16文字目
  4009a7: e8 54 ff ff ff        call   400900 <u> #16文字目がn、17文字目が5
  4009ac: 85 c0                test   eax,eax
  4009ae: 0f 84 a0 00 00 00    je     400a54 <check+0x10a>
  4009b4: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  4009b8: 48 83 c0 05          add    rax,0x5
  4009bc: 0f b6 00              movzx  eax,BYTE PTR [rax]
  4009bf: 0f be c0              movsx  eax,al
  4009c2: 89 c7                mov    edi,eax
  4009c4: e8 7f fd ff ff        call   400748 <k> #5文字目がf
  4009c9: 85 c0                test   eax,eax
  4009cb: 0f 85 83 00 00 00    jne    400a54 <check+0x10a>
  4009d1: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  4009d5: 48 83 c0 09          add    rax,0x9
  4009d9: 0f b6 00              movzx  eax,BYTE PTR [rax]
  4009dc: 0f be c0              movsx  eax,al
  4009df: 89 c7                mov    edi,eax
  4009e1: e8 62 fd ff ff        call   400748 <k> #9文字目がf
  4009e6: 85 c0                test   eax,eax
  4009e8: 75 6a                jne    400a54 <check+0x10a>
  4009ea: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  4009ee: 48 83 c0 01          add    rax,0x1
  4009f2: 48 89 c7              mov    rdi,rax
  4009f5: e8 8a fc ff ff        call   400684 <w> #1文字目からctf
  4009fa: 85 c0                test   eax,eax
  4009fc: 74 56                je     400a54 <check+0x10a>
  4009fe: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400a02: be 12 00 00 00        mov    esi,0x12
  400a07: 48 89 c7              mov    rdi,rax
  400a0a: e8 e7 fc ff ff        call   4006f6 <b> #18文字目が}
  400a0f: 85 c0                test   eax,eax
  400a11: 74 41                je     400a54 <check+0x10a>
  400a13: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400a17: be 04 00 00 00        mov    esi,0x4
  400a1c: 48 89 c7              mov    rdi,rax
  400a1f: e8 d2 fc ff ff        call   4006f6 <b> #4文字目が{
  400a24: 85 c0                test   eax,eax
  400a26: 74 2c                je     400a54 <check+0x10a>
  400a28: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400a2c: be 6c 00 00 00        mov    esi,0x6c
  400a31: 48 89 c7              mov    rdi,rax
  400a34: e8 34 fd ff ff        call   40076d <z> #6文字目がu、7文字目がn、10文字目がu、11文字目がn
  400a39: 85 c0                test   eax,eax
  400a3b: 74 17                je     400a54 <check+0x10a>
  400a3d: 48 8b 45 f8          mov    rax,QWORD PTR [rbp-0x8]
  400a41: 48 89 c7              mov    rdi,rax
  400a44: e8 40 fe ff ff        call   400889 <s> #8文字目が_
  400a49: 85 c0                test   eax,eax
  400a4b: 74 07                je     400a54 <check+0x10a>
  400a4d: b8 01 00 00 00        mov    eax,0x1
  400a52: eb 05                jmp    400a59 <check+0x10f>
  400a54: b8 00 00 00 00        mov    eax,0x0
  400a59: c9                    leave  
  400a5a: c3                    ret    
それではフラグが合っているか試してみます。
$ ./high_quality_checks 
Enter your input:
actf{fun_func710n5}
You found the flag!
フラグは、
actf{fun_func710n5}

ångstromCTF 2019 writeup IRC

IRC

Misc
10
879

We have an IRC channel, #angstromctf on freenode! Join us to ask questions, have fun, and get a flag.

IRCのチャンネルに接続します。
02:08 チャンネルに入りました
02:08 *xxxxxx join #angstromctf (~xxxxxx@yyy.zzz)
02:08 *topic : Take our survey! More than one person per team can fill it out! https://forms.gle/72by8ViMv3yM9JeU6 | 4/20 - 4/25 @ 00:00 UTC | actf{like_discord_but_worse}
フラグは、
actf{like_discord_but_worse}
です。

マスタリングXMPP
Peter Saint-Andre
オライリージャパン
2010-04-19


ångstromCTF 2019 writeup Control You

Control You

Web
20
1205

Only those who give us the flag are exempt from our control.

リンク先のページのソースを表示するとフラグが記載されています。
<script>
function stop() {
if (flag.value === "actf{control_u_so_we_can't_control_you}") {
document.body.style.background = "red";
}
}
</script>
フラグは、
actf{control_u_so_we_can't_control_you}
です。




ångstromCTF 2019 writeup Survey

Survey

Misc
10
225

We have a short survey for you to fill out for a flag! Even though it's a single challenge, we encourage every individual to submit a response.

アンケートに回答するとフラグが表示されます。
フラグは、
actf{we_hope_to_see_you_next_year}

ångstromCTF 2019 writeup Really Secure Algorithm

Really Secure Algorithm

Crypto
30
523

I found this flag somewhere when I was taking a walk, but it seems to have been encrypted with this Really Secure Algorithm!

復号するPythonプログラムを書きます。
def exgcd(m, n):
  if n>0:
    y,x,d = exgcd(n, m%n)
    return x, y-m/n*x, d
  else:
    return 1, 0, m

p = 8337989838551614633430029371803892077156162494012474856684174381868510024755832450406936717727195184311114937042673575494843631977970586746618123352329889
q = 7755060911995462151580541927524289685569492828780752345560845093073545403776129013139174889414744570087561926915046519199304042166351530778365529171009493
e = 65537
c = 7022848098469230958320047471938217952907600532361296142412318653611729265921488278588086423574875352145477376594391159805651080223698576708934993951618464460109422377329972737876060167903857613763294932326619266281725900497427458047861973153012506595691389361443123047595975834017549312356282859235890330349

n = p * q
d = exgcd(e, (p-1)*(q-1))[0] % ((p-1)*(q-1))
s = pow(c, d, n)
h = format(s, 'x')
f = ''
for i in range(0, len(h), 2):
f += chr(int(h[i:i+2], 16))
print(f)
フラグは、
actf{really_securent_algorithm}
です。



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