ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Reversing] BabyMIPS
    Wargame/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

    댓글

Designed by Tistory.