블로그 이전했습니다. https://jeongzero.oopy.io/
[CodeEngn] Basic RCE L07
본문 바로가기
워게임/CodeEngn

[CodeEngn] Basic RCE L07

728x90

1. 문제


1) 문제 확인

컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가

키젠 로직을 파악하면 될듯

2) 코드흐름 파악

// positive sp value has been detected, the output may be wrong!
BOOL __userpurge sub_401056@<eax>(int a1@<ebp>, int a2, int a3, int a4, int a5)
{
  char v6; // dl

  if ( *(_DWORD *)(a1 + 16) == 101 )
  {
    GetDlgItemTextA(*(HWND *)(a1 + 8), 104, String, 37);// String = input
    GetVolumeInformationA(
      0,
      VolumeNameBuffer,
      0x32u,
      &VolumeSerialNumber,
      &MaximumComponentLength,
      &FileSystemFlags,
      0,
      0);
    lstrcatA(VolumeNameBuffer, "4562-ABEX");
    v6 = 2;
    do
    {
      ++*(_DWORD *)VolumeNameBuffer;
      ++*(_DWORD *)&VolumeNameBuffer[1];
      ++*(_DWORD *)&VolumeNameBuffer[2];
      ++*(_DWORD *)&VolumeNameBuffer[3];
      --v6;
    }
    while ( v6 );
    lstrcatA(byte_402000, "L2C-5781");
    lstrcatA(byte_402000, VolumeNameBuffer);
    if ( lstrcmpiA(byte_402000, String) )
      MessageBoxA(*(HWND *)(a1 + 8), "The serial you entered is not correct!", "Error!", 0);
    else
      MessageBoxA(*(HWND *)(a1 + 8), "Yep, you entered a correct serial!", "Well Done!", 0);
  }
  else if ( *(_DWORD *)(a1 + 16) != 2 )
  {
    return 0;
  }
  return sub_40112D(a1, a2, a3, a4, a5);
}
  • GetDlgItemTextA : 박스에 입력한 값이 String에 들어감
  • GetVolumeInformationA : 지정된 루트 디렉토리와 연관된 파일 시스템 정보를 가져옴
    • 첫번째 인자가 바로 리소스 정보를 얻고 싶은 루트 디렉토리 path이다. NULL이면 현재 디렉토리 루트를 가져온다

중요 API는 위 두개이다. 내 볼륨의 이름은 HDD_DATA이다. 요걸 가져와서 키젠을 한다

2. 접근방법


키젠 로직을 코드로 짠다음 돌리면 된다

3. 풀이


drive = "Code"
buf = ""
for i in range(4):
    buf += chr(ord(drive[i]) + 2)
buf = buf + "Engn" + "4562-ABEX"

key = "L2C-5781"

key += buf

print(key)

===================================
L2C-5781EqfgEngn4562-ABEX

정답은 저게 아닌 CodeEngn ⇒ EqfgEngn 이렇게 바뀌므로 8바이트만 입력하면 된다

4. 몰랐던 개념


728x90

'워게임 > CodeEngn' 카테고리의 다른 글

[CodeEngine] Basic RCE L09  (0) 2020.12.29
[CodeEngn] Basic RCE L06  (0) 2020.12.28
[CodeEngn] Basic RCE L05  (0) 2019.05.17
[CodeEngn] Basic RCE L04  (0) 2019.05.16
[CodeEngn] Basic RCE L03  (0) 2019.05.16