Feed_me
150
Can you cook the most delicious recipe?
nc 159.89.166.12 9800
objdumpコマンドで逆アセンブルします。
下記の箇所で入力文字列の0文字目から、10文字目から、20文字目から数値に変換しています。$ objdump -s -D -M intel challenge1 >aaa.txt
bc1: 48 8d 45 92 lea rax,[rbp-0x6e]bc5: 48 89 c7 mov rdi,raxbc8: e8 f3 fc ff ff call 8c0 <atoi@plt>bcd: 89 85 7c ff ff ff mov DWORD PTR [rbp-0x84],eax #変数abd3: 48 8d 45 9c lea rax,[rbp-0x64]bd7: 48 89 c7 mov rdi,raxbda: e8 e1 fc ff ff call 8c0 <atoi@plt>bdf: 89 45 80 mov DWORD PTR [rbp-0x80],eax #変数bbe2: 48 8d 45 a6 lea rax,[rbp-0x5a]be6: 48 89 c7 mov rdi,raxbe9: e8 d2 fc ff ff call 8c0 <atoi@plt>bee: 89 45 84 mov DWORD PTR [rbp-0x7c],eax #変数c
次に以下の箇所でa+bと表示された最初の数値を比較、b+cと2番目の数値を比較、c+aと3番目の数値を比較しています。
bf1: 8b 95 7c ff ff ff mov edx,DWORD PTR [rbp-0x84]bf7: 8b 45 80 mov eax,DWORD PTR [rbp-0x80]bfa: 01 d0 add eax,edxbfc: 39 85 70 ff ff ff cmp DWORD PTR [rbp-0x90],eax ###c02: 0f 85 b6 00 00 00 jne cbe <main+0x281>c08: 8b 55 80 mov edx,DWORD PTR [rbp-0x80]c0b: 8b 45 84 mov eax,DWORD PTR [rbp-0x7c]c0e: 01 d0 add eax,edxc10: 39 85 74 ff ff ff cmp DWORD PTR [rbp-0x8c],eax ###c16: 0f 85 96 00 00 00 jne cb2 <main+0x275>c1c: 8b 55 84 mov edx,DWORD PTR [rbp-0x7c]c1f: 8b 85 7c ff ff ff mov eax,DWORD PTR [rbp-0x84]c25: 01 d0 add eax,edxc27: 39 85 78 ff ff ff cmp DWORD PTR [rbp-0x88],eax ###
処理が分かったところで接続します。
次の式を満たすa,b,cを求めます。$ nc 159.89.166.12 9800Can you cook my favourite food using these ingredients :)-3650 ; -19008 ; -5836 ;
a+b=-3650a=4761、b=-8411、c=-10597となるので次のとおり入力します。
b+c=-19008
c+a=-5836
0000004761-000008411-000010597That's yummy.... Here is your gift:pctf{p1zz4_t0pp3d_w1th_p1n34ppl3_s4uc3}
フラグは、
pctf{p1zz4_t0pp3d_w1th_p1n34ppl3_s4uc3}