Bace

picoCTF 2018 - assembly-1 본문

picoCTF 2018/Reversing

picoCTF 2018 - assembly-1

Bace 2020. 5. 22. 01:28

 

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