Bace
picoCTF 2018 - assembly-2 본문
0x4와 0x2d를 넣어서 return 값이 뭐냐고 한다.
주어진 소스를 봤다.
.intel_syntax noprefix
.bits 32
.global asm2
asm2:
push ebp
mov ebp,esp
sub esp,0x10
mov eax,DWORD PTR [ebp+0xc] --> 0x2d
mov DWORD PTR [ebp-0x4],eax
mov eax,DWORD PTR [ebp+0x8] --> 0x4
mov DWORD PTR [ebp-0x8],eax
jmp part_b
part_a:
add DWORD PTR [ebp-0x4],0x1
add DWORD PTR [ebp+0x8],0x64
part_b:
cmp DWORD PTR [ebp+0x8],0x1d89
jle part_a
mov eax,DWORD PTR [ebp-0x4]
mov esp,ebp
pop ebp
ret
ebp + 0xc 쪽에 0x2d가 들어가서 ebp - 0x4에 복사되고, ebp + 0x8 쪽에 0x4가 들어서 ebp - 0x8에 복사될 것이다.
그리고 b파트로 넘어가는데 0x4와 0x1d89를 비교하여 0x4가 0x1d89보다 작거나 같으면 a파트로 간다.
그리고 0x2d에 0x1을 더해주고, 0x4에 0x64를 더해주는데 0x4가 0x1d89보다 커질 때까지 반복하다가 더 커졌을 때 0x2d의 값이 flag가 되는 것 같다.
다음과 같은 코드를 짜서 실행시켰다.
실행시키면 0x2d의 값이 0x79가 되었다고 나온다.
따라서 flag는 0x79가 된다.
'picoCTF 2018 > Reversing' 카테고리의 다른 글
picoCTF 2018 - assembly-1 (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 |