TokyoWesterns CTF 6th 2020 Writeup

この大会は2020/9/19 9:00(JST)~2020/9/21 9:00(JST)に開催されました。
今回もチームで参戦。結果は597点で648チーム中80位でした。
自分で解けた問題をWriteupとして書いておきます。

Welcome!! (Warmup)

問題にフラグが書いてあった。

TWCTF{Welcome_to_TWCTF_2020!!!}

Reversing iS Amazing (Reverse, Warmup)

Ghidraでデコンパイルする。

undefined8 FUN_00100a6a(int param_1,long param_2)

{
  int iVar1;
  undefined8 uVar2;
  size_t sVar3;
  long lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  long in_FS_OFFSET;
  EVP_PKEY *local_b10;
  rsa_st *local_b08;
  BIO *local_b00;
  undefined local_af8;
  undefined local_af7;
  undefined local_af6;
  undefined local_af5;
  undefined local_af4;
  undefined local_af3;
  undefined local_af2;
  undefined local_af1;
  undefined local_af0;
  undefined local_aef;
  undefined local_aee;
  undefined local_aed;
  undefined local_aec;
  undefined local_aeb;
  undefined local_aea;
  undefined local_ae9;
  undefined local_ae8;
  undefined local_ae7;
  undefined local_ae6;
  undefined local_ae5;
  undefined local_ae4;
  undefined local_ae3;
  undefined local_ae2;
  undefined local_ae1;
  undefined local_ae0;
  undefined local_adf;
  undefined local_ade;
  undefined local_add;
  undefined local_adc;
  undefined local_adb;
  undefined local_ada;
  undefined local_ad9;
  undefined local_ad8;
  undefined local_ad7;
  undefined local_ad6;
  undefined local_ad5;
  undefined local_ad4;
  undefined local_ad3;
  undefined local_ad2;
  undefined local_ad1;
  undefined local_ad0;
  undefined local_acf;
  undefined local_ace;
  undefined local_acd;
  undefined local_acc;
  undefined local_acb;
  undefined local_aca;
  undefined local_ac9;
  undefined local_ac8;
  undefined local_ac7;
  undefined local_ac6;
  undefined local_ac5;
  undefined local_ac4;
  undefined local_ac3;
  undefined local_ac2;
  undefined local_ac1;
  undefined local_ac0;
  undefined local_abf;
  undefined local_abe;
  undefined local_abd;
  undefined local_abc;
  undefined local_abb;
  undefined local_aba;
  undefined local_ab9;
  undefined local_ab8;
  undefined local_ab7;
  undefined local_ab6;
  undefined local_ab5;
  undefined local_ab4;
  undefined local_ab3;
  undefined local_ab2;
  undefined local_ab1;
  undefined local_ab0;
  undefined local_aaf;
  undefined local_aae;
  undefined local_aad;
  undefined local_aac;
  undefined local_aab;
  undefined local_aaa;
  undefined local_aa9;
  undefined local_aa8;
  undefined local_aa7;
  undefined local_aa6;
  undefined local_aa5;
  undefined local_aa4;
  undefined local_aa3;
  undefined local_aa2;
  undefined local_aa1;
  undefined local_aa0;
  undefined local_a9f;
  undefined local_a9e;
  undefined local_a9d;
  undefined local_a9c;
  undefined local_a9b;
  undefined local_a9a;
  undefined local_a99;
  undefined local_a98;
  undefined local_a97;
  undefined local_a96;
  undefined local_a95;
  undefined local_a94;
  undefined local_a93;
  undefined local_a92;
  undefined local_a91;
  undefined local_a90;
  undefined local_a8f;
  undefined local_a8e;
  undefined local_a8d;
  undefined local_a8c;
  undefined local_a8b;
  undefined local_a8a;
  undefined local_a89;
  undefined local_a88;
  undefined local_a87;
  undefined local_a86;
  undefined local_a85;
  undefined local_a84;
  undefined local_a83;
  undefined local_a82;
  undefined local_a81;
  undefined local_a80;
  undefined local_a7f;
  undefined local_a7e;
  undefined local_a7d;
  undefined local_a7c;
  undefined local_a7b;
  undefined local_a7a;
  undefined local_a79;
  undefined8 local_a78 [76];
  uchar local_818 [1024];
  uchar local_418 [1032];
  long local_10;
  
  local_10 = *(long *)(in_FS_OFFSET + 0x28);
  local_af8 = 0x6f;
  local_af7 = 0x86;
  local_af6 = 0xe4;
  local_af5 = 0x96;
  local_af4 = 0x29;
  local_af3 = 0xbe;
  local_af2 = 0x8a;
  local_af1 = 0x5e;
  local_af0 = 0x21;
  local_aef = 0xe2;
  local_aee = 0xc0;
  local_aed = 0xda;
  local_aec = 0x25;
  local_aeb = 0xb7;
  local_aea = 0x95;
  local_ae9 = 0xe0;
  local_ae8 = 0x5f;
  local_ae7 = 10;
  local_ae6 = 0x6c;
  local_ae5 = 0xe9;
  local_ae4 = 0x44;
  local_ae3 = 0xdb;
  local_ae2 = 0x12;
  local_ae1 = 0x4c;
  local_ae0 = 0x3a;
  local_adf = 0x6c;
  local_ade = 0x14;
  local_add = 0x87;
  local_adc = 0xc6;
  local_adb = 0x36;
  local_ada = 0x6b;
  local_ad9 = 0x6d;
  local_ad8 = 0x95;
  local_ad7 = 6;
  local_ad6 = 0x1c;
  local_ad5 = 0x2d;
  local_ad4 = 0x11;
  local_ad3 = 0x9e;
  local_ad2 = 0xf8;
  local_ad1 = 0x72;
  local_ad0 = 0xcc;
  local_acf = 0x9b;
  local_ace = 0x74;
  local_acd = 0x87;
  local_acc = 0x73;
  local_acb = 0xa7;
  local_aca = 0x52;
  local_ac9 = 0x72;
  local_ac8 = 0xc;
  local_ac7 = 0x5b;
  local_ac6 = 0x92;
  local_ac5 = 0x8d;
  local_ac4 = 0x7c;
  local_ac3 = 0xa9;
  local_ac2 = 0x35;
  local_ac1 = 0xeb;
  local_ac0 = 0xc5;
  local_abf = 0xd6;
  local_abe = 0x1e;
  local_abd = 0x1c;
  local_abc = 0x9e;
  local_abb = 0x7e;
  local_aba = 0xd3;
  local_ab9 = 0x6e;
  local_ab8 = 0x43;
  local_ab7 = 0x35;
  local_ab6 = 0x93;
  local_ab5 = 0xd0;
  local_ab4 = 0x6c;
  local_ab3 = 0x26;
  local_ab2 = 0xb4;
  local_ab1 = 0x95;
  local_ab0 = 0xe5;
  local_aaf = 0x99;
  local_aae = 0x28;
  local_aad = 99;
  local_aac = 0x5e;
  local_aab = 0xeb;
  local_aaa = 0xad;
  local_aa9 = 0x40;
  local_aa8 = 0xce;
  local_aa7 = 0x26;
  local_aa6 = 0x67;
  local_aa5 = 0xf7;
  local_aa4 = 0x32;
  local_aa3 = 0xb2;
  local_aa2 = 3;
  local_aa1 = 0xd;
  local_aa0 = 0x30;
  local_a9f = 0x24;
  local_a9e = 0x93;
  local_a9d = 0x84;
  local_a9c = 0x3a;
  local_a9b = 0x19;
  local_a9a = 0xac;
  local_a99 = 0x6f;
  local_a98 = 0x11;
  local_a97 = 0xbb;
  local_a96 = 0xb;
  local_a95 = 0x5b;
  local_a94 = 0x41;
  local_a93 = 0x8d;
  local_a92 = 0x9d;
  local_a91 = 0x49;
  local_a90 = 0x1a;
  local_a8f = 0xb1;
  local_a8e = 0x21;
  local_a8d = 0xd9;
  local_a8c = 0x79;
  local_a8b = 0x43;
  local_a8a = 0xbc;
  local_a89 = 0x83;
  local_a88 = 0x1c;
  local_a87 = 0x36;
  local_a86 = 0x98;
  local_a85 = 0xb9;
  local_a84 = 0x5a;
  local_a83 = 0x53;
  local_a82 = 0xd9;
  local_a81 = 0xf4;
  local_a80 = 0xa3;
  local_a7f = 0x99;
  local_a7e = 0x34;
  local_a7d = 0x67;
  local_a7c = 0xa2;
  local_a7b = 0x8b;
  local_a7a = 0xce;
  local_a79 = 6;
  lVar4 = 0x4c;
  puVar5 = &DAT_00101100;
  puVar6 = local_a78;
  while (lVar4 != 0) {
    lVar4 = lVar4 + -1;
    *puVar6 = *puVar5;
    puVar5 = puVar5 + 1;
    puVar6 = puVar6 + 1;
  }
  if (param_1 == 2) {
    sVar3 = strlen(*(char **)(param_2 + 8));
    memcpy(local_418,*(void **)(param_2 + 8),(long)(int)sVar3);
    local_b08 = (rsa_st *)0x0;
    local_b10 = (EVP_PKEY *)0x0;
    local_b00 = (BIO *)0x0;
    local_b00 = BIO_new_mem_buf(local_a78,0x260);
    if (local_b00 == (BIO *)0x0) {
      uVar2 = 1;
    }
    else {
      local_b10 = d2i_PrivateKey_bio(local_b00,&local_b10);
      if (local_b10 == (EVP_PKEY *)0x0) {
        uVar2 = 1;
      }
      else {
        local_b08 = EVP_PKEY_get1_RSA(local_b10);
        if (local_b08 == (rsa_st *)0x0) {
          uVar2 = 1;
        }
        else {
          iVar1 = RSA_private_encrypt((int)sVar3,local_418,local_818,(RSA *)local_b08,1);
          if (iVar1 < 0) {
            uVar2 = 1;
          }
          else {
            iVar1 = memcmp(local_818,&local_af8,(long)iVar1);
            if (iVar1 == 0) {
              puts("Correct!");
            }
            else {
              puts("Incorrect!");
            }
            RSA_free((RSA *)local_b08);
            EVP_PKEY_free(local_b10);
            BIO_free_all(local_b00);
            uVar2 = 0;
          }
        }
      }
    }
  }
  else {
    printf("./rsa TWCTF{*****************************}");
    uVar2 = 1;
  }
  if (local_10 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar2;
}


                             DAT_00101100                                    XREF[3]:     FUN_00100a6a:00100e18(*), 
                                                                                          FUN_00100a6a:00100e27(*), 
                                                                                          FUN_00100a6a:00100e2a(R)  
        00101100 30 82 02        undefined8 020001025C028230h
                 5c 02 01 
                 00 02
        00101108 81              ??         81h
        00101109 81              ??         81h
        0010110a 00              ??         00h
        0010110b ae              ??         AEh
        0010110c 68              ??         68h    h
        0010110d 61              ??         61h    a
        0010110e d4              ??         D4h
        0010110f 73              ??         73h    s
        00101110 a6              ??         A6h
        00101111 33              ??         33h    3
        00101112 31              ??         31h    1
        00101113 33              ??         33h    3
        00101114 c2              ??         C2h
        00101115 1a              ??         1Ah
        00101116 5e              ??         5Eh    ^
        00101117 be              ??         BEh
        00101118 f5              ??         F5h
        00101119 ec              ??         ECh
        0010111a 90              ??         90h
        0010111b ea              ??         EAh
        0010111c 85              ??         85h
        0010111d 77              ??         77h    w
        0010111e ea              ??         EAh
        0010111f c2              ??         C2h
        00101120 db              ??         DBh
        00101121 62              ??         62h    b
        00101122 73              ??         73h    s
        00101123 b5              ??         B5h
        00101124 29              ??         29h    )
        00101125 5d              ??         5Dh    ]
        00101126 c2              ??         C2h
        00101127 bb              ??         BBh
        00101128 3a              ??         3Ah    :
        00101129 3c              ??         3Ch    <
        0010112a d1              ??         D1h
        0010112b 50              ??         50h    P
        0010112c bb              ??         BBh
        0010112d d4              ??         D4h
        0010112e d4              ??         D4h
        0010112f 9e              ??         9Eh
        00101130 ee              ??         EEh
        00101131 33              ??         33h    3
        00101132 dd              ??         DDh
        00101133 3b              ??         3Bh    ;
        00101134 30              ??         30h    0
        00101135 45              ??         45h    E
        00101136 3c              ??         3Ch    <
        00101137 eb              ??         EBh
        00101138 be              ??         BEh
        00101139 f1              ??         F1h
        0010113a 1f              ??         1Fh
        0010113b 67              ??         67h    g
        0010113c e4              ??         E4h
        0010113d 05              ??         05h
        0010113e 5c              ??         5Ch    \
        0010113f 8b              ??         8Bh
        00101140 9c              ??         9Ch
        00101141 6f              ??         6Fh    o
        00101142 3a              ??         3Ah    :
        00101143 56              ??         56h    V
        00101144 ba              ??         BAh
        00101145 e2              ??         E2h
        00101146 ba              ??         BAh
        00101147 ec              ??         ECh
        00101148 9a              ??         9Ah
        00101149 a7              ??         A7h
        0010114a d0              ??         D0h
        0010114b 43              ??         43h    C
        0010114c ed              ??         EDh
        0010114d bc              ??         BCh
        0010114e 27              ??         27h    '
        0010114f 50              ??         50h    P
        00101150 46              ??         46h    F
        00101151 c8              ??         C8h
        00101152 40              ??         40h    @
        00101153 92              ??         92h
        00101154 2e              ??         2Eh    .
        00101155 87              ??         87h
        00101156 b6              ??         B6h
        00101157 24              ??         24h    $
        00101158 e3              ??         E3h
        00101159 f4              ??         F4h
        0010115a c3              ??         C3h
        0010115b 1b              ??         1Bh
        0010115c d6              ??         D6h
        0010115d bd              ??         BDh
        0010115e ad              ??         ADh
        0010115f 55              ??         55h    U
        00101160 a4              ??         A4h
        00101161 51              ??         51h    Q
        00101162 64              ??         64h    d
        00101163 23              ??         23h    #
        00101164 10              ??         10h
        00101165 d1              ??         D1h
        00101166 6c              ??         6Ch    l
        00101167 14              ??         14h
        00101168 fd              ??         FDh
        00101169 35              ??         35h    5
        0010116a a8              ??         A8h
        0010116b 18              ??         18h
        0010116c a1              ??         A1h
        0010116d 9f              ??         9Fh
        0010116e ab              ??         ABh
        0010116f 33              ??         33h    3
        00101170 14              ??         14h
        00101171 f9              ??         F9h
        00101172 3e              ??         3Eh    >
        00101173 50              ??         50h    P
        00101174 34              ??         34h    4
        00101175 c4              ??         C4h
        00101176 3c              ??         3Ch    <
        00101177 28              ??         28h    (
        00101178 b6              ??         B6h
        00101179 10              ??         10h
        0010117a d2              ??         D2h
        0010117b fc              ??         FCh
        0010117c 90              ??         90h
        0010117d 9b              ??         9Bh
        0010117e 97              ??         97h
        0010117f 60              ??         60h    `
        00101180 d5              ??         D5h
        00101181 9a              ??         9Ah
        00101182 13              ??         13h
        00101183 e5              ??         E5h
        00101184 3e              ??         3Eh    >
        00101185 bf              ??         BFh
        00101186 38              ??         38h    8
        00101187 d0              ??         D0h
        00101188 52              ??         52h    R
        00101189 66              ??         66h    f
        0010118a 7d              ??         7Dh    }
        0010118b 02              ??         02h
        0010118c 03              ??         03h
        0010118d 01              ??         01h
        0010118e 00              ??         00h
        0010118f 01              ??         01h
        00101190 02              ??         02h
        00101191 81              ??         81h
        00101192 80              ??         80h
        00101193 03              ??         03h
        00101194 7e              ??         7Eh    ~
        00101195 81              ??         81h
        00101196 df              ??         DFh
        00101197 40              ??         40h    @
        00101198 c5              ??         C5h
        00101199 e6              ??         E6h
        0010119a a6              ??         A6h
        0010119b a8              ??         A8h
        0010119c b3              ??         B3h
        0010119d cd              ??         CDh
        0010119e d5              ??         D5h
        0010119f 72              ??         72h    r
        001011a0 1b              ??         1Bh
        001011a1 f9              ??         F9h
        001011a2 36              ??         36h    6
        001011a3 5a              ??         5Ah    Z
        001011a4 0c              ??         0Ch
        001011a5 7c              ??         7Ch    |
        001011a6 7f              ??         7Fh    
        001011a7 8e              ??         8Eh
        001011a8 91              ??         91h
        001011a9 d8              ??         D8h
        001011aa a2              ??         A2h
        001011ab 1a              ??         1Ah
        001011ac d2              ??         D2h
        001011ad 0e              ??         0Eh
        001011ae 57              ??         57h    W
        001011af d5              ??         D5h
        001011b0 6a              ??         6Ah    j
        001011b1 70              ??         70h    p
        001011b2 47              ??         47h    G
        001011b3 7d              ??         7Dh    }
        001011b4 47              ??         47h    G
        001011b5 96              ??         96h
        001011b6 17              ??         17h
        001011b7 00              ??         00h
        001011b8 6c              ??         6Ch    l
        001011b9 23              ??         23h    #
        001011ba 4b              ??         4Bh    K
        001011bb de              ??         DEh
        001011bc 60              ??         60h    `
        001011bd b4              ??         B4h
        001011be 32              ??         32h    2
        001011bf 69              ??         69h    i
        001011c0 42              ??         42h    B
        001011c1 b5              ??         B5h
        001011c2 0f              ??         0Fh
        001011c3 fd              ??         FDh
        001011c4 03              ??         03h
        001011c5 db              ??         DBh
        001011c6 7b              ??         7Bh    {
        001011c7 a4              ??         A4h
        001011c8 2c              ??         2Ch    ,
        001011c9 69              ??         69h    i
        001011ca 2a              ??         2Ah    *
        001011cb 11              ??         11h
        001011cc 0c              ??         0Ch
        001011cd c3              ??         C3h
        001011ce 78              ??         78h    x
        001011cf 1d              ??         1Dh
        001011d0 3f              ??         3Fh    ?
        001011d1 67              ??         67h    g
        001011d2 f7              ??         F7h
        001011d3 42              ??         42h    B
        001011d4 bc              ??         BCh
        001011d5 ba              ??         BAh
        001011d6 38              ??         38h    8
        001011d7 ae              ??         AEh
        001011d8 cc              ??         CCh
        001011d9 26              ??         26h    &
        001011da db              ??         DBh
        001011db ca              ??         CAh
        001011dc 81              ??         81h
        001011dd 1e              ??         1Eh
        001011de 49              ??         49h    I
        001011df fd              ??         FDh
        001011e0 fa              ??         FAh
        001011e1 06              ??         06h
        001011e2 bd              ??         BDh
        001011e3 32              ??         32h    2
        001011e4 83              ??         83h
        001011e5 3b              ??         3Bh    ;
        001011e6 9e              ??         9Eh
        001011e7 66              ??         66h    f
        001011e8 1e              ??         1Eh
        001011e9 9b              ??         9Bh
        001011ea 8b              ??         8Bh
        001011eb 4f              ??         4Fh    O
        001011ec f5              ??         F5h
        001011ed 04              ??         04h
        001011ee 5e              ??         5Eh    ^
        001011ef 81              ??         81h
        001011f0 da              ??         DAh
        001011f1 69              ??         69h    i
        001011f2 db              ??         DBh
        001011f3 91              ??         91h
        001011f4 7e              ??         7Eh    ~
        001011f5 0f              ??         0Fh
        001011f6 96              ??         96h
        001011f7 69              ??         69h    i
        001011f8 a1              ??         A1h
        001011f9 51              ??         51h    Q
        001011fa 93              ??         93h
        001011fb b3              ??         B3h
        001011fc 50              ??         50h    P
        001011fd f4              ??         F4h
        001011fe 84              ??         84h
        001011ff 10              ??         10h
        00101200 d8              ??         D8h
        00101201 49              ??         49h    I
        00101202 24              ??         24h    $
        00101203 c6              ??         C6h
        00101204 b0              ??         B0h
        00101205 51              ??         51h    Q
        00101206 2b              ??         2Bh    +
        00101207 bc              ??         BCh
        00101208 7a              ??         7Ah    z
        00101209 e0              ??         E0h
        0010120a 26              ??         26h    &
        0010120b df              ??         DFh
        0010120c 42              ??         42h    B
        0010120d ef              ??         EFh
        0010120e bb              ??         BBh
        0010120f 9b              ??         9Bh
        00101210 57              ??         57h    W
        00101211 e2              ??         E2h
        00101212 dd              ??         DDh
        00101213 02              ??         02h
        00101214 41              ??         41h    A
        00101215 00              ??         00h
        00101216 d9              ??         D9h
        00101217 8b              ??         8Bh
        00101218 83              ??         83h
        00101219 a9              ??         A9h
        0010121a f6              ??         F6h
        0010121b bd              ??         BDh
        0010121c 94              ??         94h
        0010121d cc              ??         CCh
        0010121e ef              ??         EFh
        0010121f 93              ??         93h
        00101220 34              ??         34h    4
        00101221 5a              ??         5Ah    Z
        00101222 35              ??         35h    5
        00101223 ee              ??         EEh
        00101224 8b              ??         8Bh
        00101225 b3              ??         B3h
        00101226 4e              ??         4Eh    N
        00101227 32              ??         32h    2
        00101228 41              ??         41h    A
        00101229 7c              ??         7Ch    |
        0010122a c6              ??         C6h
        0010122b 9c              ??         9Ch
        0010122c 2a              ??         2Ah    *
        0010122d 5e              ??         5Eh    ^
        0010122e f0              ??         F0h
        0010122f 97              ??         97h
        00101230 c2              ??         C2h
        00101231 45              ??         45h    E
        00101232 3d              ??         3Dh    =
        00101233 8f              ??         8Fh
        00101234 68              ??         68h    h
        00101235 1e              ??         1Eh
        00101236 34              ??         34h    4
        00101237 b7              ??         B7h
        00101238 b0              ??         B0h
        00101239 5f              ??         5Fh    _
        0010123a af              ??         AFh
        0010123b 5e              ??         5Eh    ^
        0010123c 9e              ??         9Eh
        0010123d fd              ??         FDh
        0010123e 41              ??         41h    A
        0010123f b8              ??         B8h
        00101240 ee              ??         EEh
        00101241 5c              ??         5Ch    \
        00101242 8b              ??         8Bh
        00101243 5a              ??         5Ah    Z
        00101244 ca              ??         CAh
        00101245 4e              ??         4Eh    N
        00101246 b7              ??         B7h
        00101247 51              ??         51h    Q
        00101248 7a              ??         7Ah    z
        00101249 de              ??         DEh
        0010124a 57              ??         57h    W
        0010124b 21              ??         21h    !
        0010124c 37              ??         37h    7
        0010124d aa              ??         AAh
        0010124e 40              ??         40h    @
        0010124f 9e              ??         9Eh
        00101250 23              ??         23h    #
        00101251 0a              ??         0Ah
        00101252 51              ??         51h    Q
        00101253 1d              ??         1Dh
        00101254 ed              ??         EDh
        00101255 6b              ??         6Bh    k
        00101256 02              ??         02h
        00101257 41              ??         41h    A
        00101258 00              ??         00h
        00101259 cd              ??         CDh
        0010125a 3c              ??         3Ch    <
        0010125b cb              ??         CBh
        0010125c 39              ??         39h    9
        0010125d 7e              ??         7Eh    ~
        0010125e ce              ??         CEh
        0010125f df              ??         DFh
        00101260 9f              ??         9Fh
        00101261 d2              ??         D2h
        00101262 c8              ??         C8h
        00101263 67              ??         67h    g
        00101264 9d              ??         9Dh
        00101265 64              ??         64h    d
        00101266 86              ??         86h
        00101267 22              ??         22h    "
        00101268 d3              ??         D3h
        00101269 e5              ??         E5h
        0010126a bc              ??         BCh
        0010126b 3f              ??         3Fh    ?
        0010126c 0a              ??         0Ah
        0010126d 33              ??         33h    3
        0010126e 32              ??         32h    2
        0010126f b8              ??         B8h
        00101270 e0              ??         E0h
        00101271 3f              ??         3Fh    ?
        00101272 dc              ??         DCh
        00101273 a0              ??         A0h
        00101274 7f              ??         7Fh    
        00101275 e6              ??         E6h
        00101276 a6              ??         A6h
        00101277 fc              ??         FCh
        00101278 87              ??         87h
        00101279 df              ??         DFh
        0010127a 4e              ??         4Eh    N
        0010127b 86              ??         86h
        0010127c 80              ??         80h
        0010127d 81              ??         81h
        0010127e 3a              ??         3Ah    :
        0010127f e4              ??         E4h
        00101280 e0              ??         E0h
        00101281 5e              ??         5Eh    ^
        00101282 e1              ??         E1h
        00101283 41              ??         41h    A
        00101284 1a              ??         1Ah
        00101285 d0              ??         D0h
        00101286 f4              ??         F4h
        00101287 b8              ??         B8h
        00101288 c2              ??         C2h
        00101289 4e              ??         4Eh    N
        0010128a 00              ??         00h
        0010128b 91              ??         91h
        0010128c 9a              ??         9Ah
        0010128d 1a              ??         1Ah
        0010128e f0              ??         F0h
        0010128f 1e              ??         1Eh
        00101290 38              ??         38h    8
        00101291 9f              ??         9Fh
        00101292 ca              ??         CAh
        00101293 55              ??         55h    U
        00101294 e2              ??         E2h
        00101295 a3              ??         A3h
        00101296 2d              ??         2Dh    -
        00101297 cd              ??         CDh
        00101298 b7              ??         B7h
        00101299 02              ??         02h
        0010129a 41              ??         41h    A
        0010129b 00              ??         00h
        0010129c 81              ??         81h
        0010129d 29              ??         29h    )
        0010129e 7b              ??         7Bh    {
        0010129f 77              ??         77h    w
        001012a0 eb              ??         EBh
        001012a1 5e              ??         5Eh    ^
        001012a2 ae              ??         AEh
        001012a3 3d              ??         3Dh    =
        001012a4 6b              ??         6Bh    k
        001012a5 35              ??         35h    5
        001012a6 0c              ??         0Ch
        001012a7 4d              ??         4Dh    M
        001012a8 4f              ??         4Fh    O
        001012a9 5e              ??         5Eh    ^
        001012aa 1d              ??         1Dh
        001012ab a5              ??         A5h
        001012ac cd              ??         CDh
        001012ad 14              ??         14h
        001012ae bb              ??         BBh
        001012af 9b              ??         9Bh
        001012b0 18              ??         18h
        001012b1 d4              ??         D4h
        001012b2 d9              ??         D9h
        001012b3 b7              ??         B7h
        001012b4 5a              ??         5Ah    Z
        001012b5 c3              ??         C3h
        001012b6 cf              ??         CFh
        001012b7 fd              ??         FDh
        001012b8 8a              ??         8Ah
        001012b9 4a              ??         4Ah    J
        001012ba 5d              ??         5Dh    ]
        001012bb f8              ??         F8h
        001012bc 29              ??         29h    )
        001012bd 36              ??         36h    6
        001012be b2              ??         B2h
        001012bf ca              ??         CAh
        001012c0 6c              ??         6Ch    l
        001012c1 f6              ??         F6h
        001012c2 12              ??         12h
        001012c3 11              ??         11h
        001012c4 ad              ??         ADh
        001012c5 f6              ??         F6h
        001012c6 dd              ??         DDh
        001012c7 d7              ??         D7h
        001012c8 26              ??         26h    &
        001012c9 8a              ??         8Ah
        001012ca 36              ??         36h    6
        001012cb 39              ??         39h    9
        001012cc bc              ??         BCh
        001012cd 4f              ??         4Fh    O
        001012ce ed              ??         EDh
        001012cf 52              ??         52h    R
        001012d0 9b              ??         9Bh
        001012d1 8a              ??         8Ah
        001012d2 c6              ??         C6h
        001012d3 61              ??         61h    a
        001012d4 18              ??         18h
        001012d5 52              ??         52h    R
        001012d6 8b              ??         8Bh
        001012d7 dd              ??         DDh
        001012d8 71              ??         71h    q
        001012d9 42              ??         42h    B
        001012da 02              ??         02h
        001012db 97              ??         97h
        001012dc 02              ??         02h
        001012dd 40              ??         40h    @
        001012de 12              ??         12h
        001012df ad              ??         ADh
        001012e0 51              ??         51h    Q
        001012e1 a1              ??         A1h
        001012e2 2d              ??         2Dh    -
        001012e3 d5              ??         D5h
        001012e4 0d              ??         0Dh
        001012e5 ac              ??         ACh
        001012e6 b1              ??         B1h
        001012e7 b5              ??         B5h
        001012e8 e3              ??         E3h
        001012e9 18              ??         18h
        001012ea 03              ??         03h
        001012eb a9              ??         A9h
        001012ec e1              ??         E1h
        001012ed 49              ??         49h    I
        001012ee 7f              ??         7Fh    
        001012ef 42              ??         42h    B
        001012f0 9e              ??         9Eh
        001012f1 4a              ??         4Ah    J
        001012f2 03              ??         03h
        001012f3 56              ??         56h    V
        001012f4 be              ??         BEh
        001012f5 54              ??         54h    T
        001012f6 49              ??         49h    I
        001012f7 fb              ??         FBh
        001012f8 7d              ??         7Dh    }
        001012f9 ef              ??         EFh
        001012fa a5              ??         A5h
        001012fb c1              ??         C1h
        001012fc d4              ??         D4h
        001012fd 81              ??         81h
        001012fe 58              ??         58h    X
        001012ff e5              ??         E5h
        00101300 00              ??         00h
        00101301 80              ??         80h
        00101302 79              ??         79h    y
        00101303 42              ??         42h    B
        00101304 2e              ??         2Eh    .
        00101305 c9              ??         C9h
        00101306 ec              ??         ECh
        00101307 58              ??         58h    X
        00101308 7b              ??         7Bh    {
        00101309 60              ??         60h    `
        0010130a 41              ??         41h    A
        0010130b 5b              ??         5Bh    [
        0010130c c3              ??         C3h
        0010130d e4              ??         E4h
        0010130e 8a              ??         8Ah
        0010130f cc              ??         CCh
        00101310 aa              ??         AAh
        00101311 73              ??         73h    s
        00101312 67              ??         67h    g
        00101313 b8              ??         B8h
        00101314 2a              ??         2Ah    *
        00101315 47              ??         47h    G
        00101316 e4              ??         E4h
        00101317 e2              ??         E2h
        00101318 b8              ??         B8h
        00101319 e6              ??         E6h
        0010131a 23              ??         23h    #
        0010131b 0b              ??         0Bh
        0010131c 6c              ??         6Ch    l
        0010131d 09              ??         09h
        0010131e 02              ??         02h
        0010131f 40              ??         40h    @
        00101320 3e              ??         3Eh    >
        00101321 76              ??         76h    v
        00101322 64              ??         64h    d
        00101323 63              ??         63h    c
        00101324 d4              ??         D4h
        00101325 83              ??         83h
        00101326 b0              ??         B0h
        00101327 0e              ??         0Eh
        00101328 62              ??         62h    b
        00101329 46              ??         46h    F
        0010132a b8              ??         B8h
        0010132b 1f              ??         1Fh
        0010132c 0d              ??         0Dh
        0010132d e3              ??         E3h
        0010132e 30              ??         30h    0
        0010132f 3e              ??         3Eh    >
        00101330 e9              ??         E9h
        00101331 16              ??         16h
        00101332 40              ??         40h    @
        00101333 79              ??         79h    y
        00101334 8f              ??         8Fh
        00101335 8a              ??         8Ah
        00101336 77              ??         77h    w
        00101337 30              ??         30h    0
        00101338 66              ??         66h    f
        00101339 ae              ??         AEh
        0010133a 25              ??         25h    %
        0010133b e6              ??         E6h
        0010133c c3              ??         C3h
        0010133d 3b              ??         3Bh    ;
        0010133e 75              ??         75h    u
        0010133f 7e              ??         7Eh    ~
        00101340 ab              ??         ABh
        00101341 7e              ??         7Eh    ~
        00101342 ff              ??         FFh
        00101343 4a              ??         4Ah    J
        00101344 09              ??         09h
        00101345 e0              ??         E0h
        00101346 38              ??         38h    8
        00101347 ec              ??         ECh
        00101348 b6              ??         B6h
        00101349 5d              ??         5Dh    ]
        0010134a eb              ??         EBh
        0010134b b3              ??         B3h
        0010134c 85              ??         85h
        0010134d 59              ??         59h    Y
        0010134e c0              ??         C0h
        0010134f 6d              ??         6Dh    m
        00101350 55              ??         55h    U
        00101351 4e              ??         4Eh    N
        00101352 a8              ??         A8h
        00101353 05              ??         05h
        00101354 c3              ??         C3h
        00101355 71              ??         71h    q
        00101356 ef              ??         EFh
        00101357 60              ??         60h    `
        00101358 18              ??         18h
        00101359 db              ??         DBh
        0010135a 2b              ??         2Bh    +
        0010135b 6d              ??         6Dh    m
        0010135c cc              ??         CCh
        0010135d 1e              ??         1Eh
        0010135e 92              ??         92h
        0010135f fc              ??         FCh

data部にある秘密鍵はバイナリから切り取った方が早い。秘密鍵は暗号化に使われているので、公開鍵で復号できる。local_af8以下のデータを暗号化データとして、公開鍵で復号する。

from Crypto.PublicKey import RSA
from Crypto.Util.number import *

def codes_to_c(codes):
    c = 0
    for code in codes:
        c *= 256
        c += code
    return c

with open('rsa', 'rb') as f:
    data = f.read()

prikey = data[0x1100:0x1360]
pri = RSA.importKey(prikey)

n = pri.n
e = pri.e

codes = [0x6f, 0x86, 0xe4, 0x96, 0x29, 0xbe, 0x8a, 0x5e, 0x21, 0xe2, 0xc0, 0xda, 0x25, 0xb7, 0x95, 0xe0, 0x5f, 10, 0x6c, 0xe9, 0x44, 0xdb, 0x12, 0x4c, 0x3a, 0x6c, 0x14, 0x87, 0xc6, 0x36, 0x6b, 0x6d, 0x95, 6, 0x1c, 0x2d, 0x11, 0x9e, 0xf8, 0x72, 0xcc, 0x9b, 0x74, 0x87, 0x73, 0xa7, 0x52, 0x72, 0xc, 0x5b, 0x92, 0x8d, 0x7c, 0xa9, 0x35, 0xeb, 0xc5, 0xd6, 0x1e, 0x1c, 0x9e, 0x7e, 0xd3, 0x6e, 0x43, 0x35, 0x93, 0xd0, 0x6c, 0x26, 0xb4, 0x95, 0xe5, 0x99, 0x28, 99, 0x5e, 0xeb, 0xad, 0x40, 0xce, 0x26, 0x67, 0xf7, 0x32, 0xb2, 3, 0xd, 0x30, 0x24, 0x93, 0x84, 0x3a, 0x19, 0xac, 0x6f, 0x11, 0xbb, 0xb, 0x5b, 0x41, 0x8d, 0x9d, 0x49, 0x1a, 0xb1, 0x21, 0xd9, 0x79, 0x43, 0xbc, 0x83, 0x1c, 0x36, 0x98, 0xb9, 0x5a, 0x53, 0xd9, 0xf4, 0xa3, 0x99, 0x34, 0x67, 0xa2, 0x8b, 0xce, 6]

c = codes_to_c(codes)

m = pow(c, e, n)
flag = long_to_bytes(m)
print flag

実行結果は以下の通り。

  TWCTF{Rivest_Shamir_Adleman}
TWCTF{Rivest_Shamir_Adleman}

easy-hash (Crypto, Warmup)

'twctf: 'から始まり、'2020'で終わり、'twctf: please give me the flag of 2020'とは異なる文字列のハッシュ(easy_hash)で'twctf: please give me the flag of 2020'のハッシュと同じになるものを指定する必要がある。
easy_hashは4バイトごとに数値にして足しているので、どこか4バイトのブロックを交換したものを指定する。例えば、以下のように入れ替えてみる。

'twctf: please give me the flag of 2020'
        ↓
'twctf: pe gileasve me the flag of 2020'
$ curl https://crypto01.chal.ctf.westerns.tokyo -d 'twctf: pe gileasve me the flag of 2020'
Congrats! The flag is TWCTF{colorfully_decorated_dream}
TWCTF{colorfully_decorated_dream}

mask (Misc)

サブネットマスクからホストアドレスの第四オクテットをASCIIコードとしてデコードすると、base64文字列になる。これをデコードするとフラグになる。

adrs_list = '''192.168.55.86/255.255.255.0
192.168.80.198/255.255.255.128
192.168.1.228/255.255.255.128
192.168.90.68/255.255.254.0
192.168.8.214/255.255.255.128
192.168.5.197/255.255.255.128
192.168.71.90/255.255.255.0
192.168.62.55/255.255.255.192
192.168.78.209/255.255.255.128
192.168.76.216/255.255.255.128
192.168.91.202/255.255.255.128
192.168.93.108/255.255.255.0
192.168.74.76/255.255.254.0
192.168.10.88/255.255.254.0
192.168.82.236/255.255.255.128
192.168.13.246/255.255.255.128
192.168.99.228/255.255.255.128
192.168.68.83/255.255.252.0
192.168.23.113/255.255.255.192
192.168.52.113/255.255.255.192
192.168.69.99/255.255.255.0
192.168.19.114/255.255.255.192
192.168.53.236/255.255.255.128
192.168.90.117/255.255.254.0
192.168.35.90/255.255.255.0
192.168.91.121/255.255.255.0
192.168.48.49/255.255.255.192
192.168.27.104/255.255.255.0
192.168.98.204/255.255.255.128
192.168.93.87/255.255.255.0
192.168.44.113/255.255.255.192
192.168.40.104/255.255.248.0
192.168.25.227/255.255.255.128
192.168.57.50/255.255.255.192
192.168.97.115/255.255.255.0
192.168.30.47/255.255.255.192
192.168.10.102/255.255.254.0
192.168.51.209/255.255.255.128
192.168.82.125/255.255.255.192
192.168.72.125/255.255.255.192'''

adrs_list = adrs_list.split('\n')

b64_flag = ''
for adrs in adrs_list:
    ip_tail = int(adrs.split('/')[0].split('.')[3])
    subnet_mask_tail = int(adrs.split('/')[1].split('.')[3])
    no_mask = subnet_mask_tail ^ 0xff
    b64_flag += chr(ip_tail & no_mask)

print '[+] base64 str:', b64_flag

flag = b64_flag.decode('base64')
print flag

実行結果は以下の通り。

[+] base64 str: VFdDVEZ7QXJlLXlvdS11c2luZy1hLW1hc2s/fQ==
TWCTF{Are-you-using-a-mask?}
TWCTF{Are-you-using-a-mask?}