Bace

picoCTF 2018 - assembly-2 본문

picoCTF 2018/Reversing

picoCTF 2018 - assembly-2

Bace 2020. 5. 22. 19:02

 

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