Reversing/Reversing (Wargame)

[HackCTF] Handray

ElAsJay 2021. 5. 3. 03:25
728x90

Analyze

  • 64bit ELF

assembly code

gdb(한번에 보기 좋아서..)

하이라이팅한 부분이 현재 프로그램을 실행시켰을 때, 프로그램의 흐름대로 실행되는 코드들이다.

하지만 우리가 원하는 부분은

이 부분으로, <main+19> 에서의 jne 0x40058d에 의해 실행되지 않고 지나간다.

그렇다면 어떻게 jne에서 점프되지 않고 그 아래 코드인 '0x400544~0x400586'을 실행시킬 수 있을까? 답은 jne 의 바로 위 조건을 확인해야한다.

<main+15> 에서 cmp [rbp-0x4], 0으로 rbp-0x4의 값이 0인지 비교하고 있다. 이 때, rbp-0x4의 값이 0이 되어야 jne에서 점프하지 않을 수 있다.

따라서, <main+15>에 breakpoint를 걸고 rbp-0x4의 값을 0으로 바꿔 실행한다.

bp를 걸고 실행한 후 rbp 값을 확인해 rbp-0x4에 저장된 값을 0으로 바꾼다
성공!

SMALL