-
[Reversing] BabyMIPSWargame/HackCTF 2019. 12. 29. 13:41
동적 디버깅을 하며 MIPS operand를 공부하고 싶었지만,
qemu에 MIPS를 올리는 과정에서 문제가 있었던 탓인지 제대로 되지 않았다.
그래서 Ghidra의 도움을 좀 받아보았다.
main 의 일부분이다. 평문의 위치를 바꿔주는 기능을 하는 듯 하다.
이 외에 평문을 암호화 하는 부분이 있을거라 생각하고 스크롤을 더 내려보았다.
암호화 하는 부분이 있었다. 암호화 방식은 다음과 같다.
data[j] ^ j ^ input[j] != comp[j]
XOR은 교환법칙이 성립되므로 input 값을 찾아낼 수 있다.
input[j] == data[j] ^ j ^ comp[j]
소스코드는 다음과 같다.
data = [0x72, 0x09, 0x04, 0x10, 0x49, 0x19, 0x3a, 0x1c, 0x34, 0x3b, 0x26, 0x2a, 0x15, 0x30, 0x52, 0x1b, 0x0d, 0x0c, 0x12, 0x38, 0x49, 0x04, 0x02, 0x69, 0x4b] comp = [0x43, 0x6f, 0x6e, 0x67, 0x72, 0x61, 0x74, 0x7a, 0x5f, 0x59, 0x6f, 0x75, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x61, 0x67, 0x21, 0x21] for i in range(0x19): print(chr(data[i] ^ i ^ comp[i]), end='')
'Wargame > HackCTF' 카테고리의 다른 글
[Pwnable] Random (0) 2020.01.01 [Pwnable] gpwn (0) 2019.12.29 [Cryptography] Smooth CipherText (0) 2019.12.23 [Reversing] Static (0) 2019.12.04 [Reversing] Keygen (0) 2019.11.24