Skip to content

Instantly share code, notes, and snippets.

@KSHMK
Last active June 24, 2018 17:48
Show Gist options
  • Save KSHMK/fa89091f6a5dc6444ee86dfee85466fd to your computer and use it in GitHub Desktop.
Save KSHMK/fa89091f6a5dc6444ee86dfee85466fd to your computer and use it in GitHub Desktop.
2018 Whitehat Babymips writeup

Babymips

분석

MIPS 바이너리 였기 때문에 IDA로 분석을 해 보았습니다. 1.png

time 함수를 통해 rand의 seed를 지정합니다.

1.png

이후 코드에서는 rand를 통해 어떤 연산을 수행하고 만약 수행한 연산값이 2라면 비로소 입력값과 검증값을 비교합니다. 1.png

저는 QEMU 에뮬을 사용하여 GDB Server를 통해 IDA로 디버깅 했습니다. 1.png

각 비교문마다 BreakPoint를 걸고 3번정도 반복한뒤 빠진 부분을 보충하면 KEY는 Th1s_1s_k3y_f1foasdjfp1j234joxjpcvxcvjapsdforjqwpejoajfsdpjfaaa3gjqi4938 로 나옵니다. 1.png

하지만 이 키를 넣고 실행하면 잘못된 명령어라고 나옵니다. 1.png

이는 __bswap_32 함수 안의 wsbh 명령어에서 발생하는데 VM의 특징상 해당 명령어에 오류가 있는것 같습니다.

그래서 저는 손수 해당 명령어의 행동인 byte swaping을 하였고 그 결과 1.png

플래그가 나왔습니다.

FLAG

flag{B6by_MipS_h4T3_asA}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment