This code is from the picoCTF 2018:
asm3:
push ebp
mov ebp,esp
mov eax,0xbc
xor al,al
mov ah,BYTE PTR [ebp+0x9]
sal ax,0x10
sub al,BYTE PTR [ebp+0xc]
add ah,BYTE PTR [ebp+0xd]
xor ax,WORD PTR [ebp+0x10]
mov esp, ebp
pop ebp
ret
我在解决 CTF 方面还很陌生,但我正在进步。但有一件事让我很沮丧。在这个 CTF 中,给出了 3 个输入。但是按照我的逻辑。有 4 个(我不要求 CTF 的提示,因为我已经通过将其用作 asm 函数并提供输入来解决它)但是按照我的逻辑,这应该像:
Enter 4 inputs: *User Entered 3*
Error. 4th input not found
但事实上……它给出了正确的答案。不是错误。在我看来,输入是:
1) BYTE PTR [ebp+0x9]
2) BYTE PTR [ebp+0xc]
3) BYTE PTR [ebp+0xd]
4) WORD PTR [ebp+0x10]
如果有人可以...请告诉我,如何弄清楚哪个指针是输入的,哪个不是。