정보보안/Reversing.Kr

EasyELF[Reversing.Kr]

b1ackhand 2022. 8. 7. 19:03

ELF파일이기 때문에 리눅스 환경에서 실행 해보았다.

readelf를 이용해서 어떤 프로그램인지 파악해 보았다.

실행시키기 위해서는 chmod를 이용해서 권한을 바꿔준다음에 실행이가능하다

비밀번호를 입력하면 Wrong이 나오는데 정답을 찾는 문제이다.

다시 윈도우로 돌아와 저번에 사용한 기드라를 사용해보았다.

string 검색을 통해 correct의 위치를 볼 수 있고

이가 사용된 장소를 추적가능하다.

 

그럼 다음과 같이 디컴파일된 부분을 볼 수 있다.

확인하는 함수에서 나온값에 의해 출력이 결정된다.

undefined4 FUN_08048451(void)

{
  undefined4 uVar1;
  
  if (DAT_0804a021 == '1') {
    DAT_0804a020 = DAT_0804a020 ^ 0x34;
    DAT_0804a022 = DAT_0804a022 ^ 0x32;
    DAT_0804a023 = DAT_0804a023 ^ 0x88;
    if (DAT_0804a024 == 'X') {
      if (DAT_0804a025 == '\0') {
        if (DAT_0804a022 == 0x7c) {
          if (DAT_0804a020 == 0x78) {
            if (DAT_0804a023 == 0xdd) {
              uVar1 = 1;
            }
            else {
              uVar1 = 0;
            }
          }
          else {
            uVar1 = 0;
          }
        }
        else {
          uVar1 = 0;
        }
      }
      else {
        uVar1 = 0;
      }
    }
    else {
      uVar1 = 0;
    }
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}

생각보다 단순해 보여서 이를 직접 파이썬으로 코딩하였다.

 

ans = []

print(0x34 ^ 0x78)

ans.append( chr(0x34 ^ 0x78) ) #DAT_0804a020
ans.append( '1' ) #DAT_0804a021
ans.append( chr(0x7c ^ 0x32) )  #DAT_0804a022
ans.append( chr(0xdd ^ 0x88) ) #DAT_0804a023
ans.append('X') #DAT_0804a024

print(ans)

'정보보안 > Reversing.Kr' 카테고리의 다른 글

ransomware[Reversing.Kr]  (0) 2022.08.10
CShop[Reversing.Kr]  (0) 2022.08.09
Position[Reversing.Kr]  (0) 2022.08.07
ImagePrc[Reversing.Kr]  (0) 2022.08.03
Replace[Reversing.Kr]  (0) 2022.08.01