Bace
picoCTF 2018 - assembly-1 본문

0x76을 주었을 때 어떤 값이 return 되냐고 한다.
문제에서 주어진 소스 파일을 확인해보았다.
.intel_syntax noprefix
.bits 32
.global asm1
asm1:
push ebp
mov ebp,esp
cmp DWORD PTR [ebp+0x8],0x98
jg part_a
cmp DWORD PTR [ebp+0x8],0x8
jne part_b
mov eax,DWORD PTR [ebp+0x8]
add eax,0x3
jmp part_d
part_a:
cmp DWORD PTR [ebp+0x8],0x16
jne part_c
mov eax,DWORD PTR [ebp+0x8]
sub eax,0x3
jmp part_d
part_b:
mov eax,DWORD PTR [ebp+0x8]
sub eax,0x3
jmp part_d
cmp DWORD PTR [ebp+0x8],0xbc
jne part_c
mov eax,DWORD PTR [ebp+0x8]
sub eax,0x3
jmp part_d
part_c:
mov eax,DWORD PTR [ebp+0x8]
add eax,0x3
part_d:
pop ebp
ret
맨 처음에 asm1 부분에서 0x76과 0x98을 비교하여 0x98보다 크면 a 파트로 가고, 아니면 0x8과 비교하여 0x8과 같지 않으면 b로 간다.
0x76은 0x98보다 크지 않고, 0x8과 같지 않기 때문에 b파트로 간다.
b파트에서는 0x76에서 0x3을 빼고 d 파트로 간 후에 프로그램이 끝난다.
그러므로 0x76 - 0x3이 정답이 된다.
정답은 0x73
'picoCTF 2018 > Reversing' 카테고리의 다른 글
picoCTF 2018 - assembly-2 (0) | 2020.05.22 |
---|---|
picoCTF 2018 - assembly-0 (0) | 2020.05.21 |
picoCTF 2018 - Reversing Warmup 2 (0) | 2020.05.20 |
picoCTF 2018 - Reversing Warmup 1 (0) | 2020.05.20 |