picoCTF 2018 assembly-1 - Points: 200

1618 단어 picoCTFCTF

문제





풀어 보았다.



asm1(0xcd)일 때 리턴은 무엇인가라는 문제입니다.
비슷한 문제가 이전에도있었습니다.
picoCTF 2018 assembly-0 - Points: 150

우선 다운로드해 봅니다.
문제처럼 어셈블러였습니다.



우선 전제로서 이하는 잊지 않도록.
  • 인수는 ebp+0x8에 들어 있다
  • 반환 값은 함수가 끝나면 eax

  • 순서대로 따라갑시다.

    9행째
    cmp DWORD PTR [ebp+0x8],0xde
    

    에서 0xcd와 0xde를 비교합니다.
    물론 다르게 0xcd<0xde입니다.

    10행째
    jg  part_a
    

    는 ">"일 때 점프하는 명령이므로 이번에는 점프하지 않습니다.

    다음 11행
    cmp DWORD PTR [ebp+0x8],0x8
    

    는 0xcd와 0x8의 비교입니다.
    물론 0xcd와 0x8은 다릅니다.

    12행
    jne part_b
    

    같지 않으면 점프이므로 22 행으로 점프합니다.

    23행
    mov eax,DWORD PTR [ebp+0x8]
    

    에서 eax에 0xcd가 대입됩니다.

    24행
    sub eax,0x3
    

    eax-0x3을 eax에 할당합니다.
    0xcd-0x3은 0xca이므로 eax는 0xca입니다.

    25행
    jmp part_d
    

    에서 점프.

    part_d는 ret가 있기 때문에 함수의 종료.
    어라? 이것으로 끝?
    다른 곳은 더미입니까?

    우선 현재의 eax의 값은 0xca이므로 이것을 넣어 보면 정답이었습니다-.

    좋은 웹페이지 즐겨찾기