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}