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

[CodeEngine] Basic RCE L16

728x90

1. 문제


키젠 문제

2. 접근방법


  v5 = (_DWORD *)std::operator>><char>(&std::cin, v14);
  if ( std::ios::operator void *((char *)v5 + *(_DWORD *)(*v5 - 12)) )
  {
    ++v16;
    v7 = std::string::length((std::string *)v14);
    if ( v7 > v15 )
      v15 = std::string::length((std::string *)v14);
    v13 = 12 * v15 * 12 * v15 * 12 * v15 + 23;
    std::operator<<<std::char_traits<char>>((int)&std::cout, " Enter your Password: ");
    std::istream::operator>>(&std::cin, &password);
    v13 *= 0xACE81;
    if ( password == v13 )
    {
      v8 = GetStdHandle(0xFFFFFFF5);
      SetConsoleTextAttribute(v8, 0xAu);
      std::ostream::operator<<(&std::cout, std::endl<char,std::char_traits<char>>);
      std::operator<<<std::char_traits<char>>((int)&std::cout, " Good Job!\n");
      std::operator<<<std::char_traits<char>>((int)&std::cout, " =)");
    }
    else
    {
      v10 = GetStdHandle(0xFFFFFFF5);
      SetConsoleTextAttribute(v10, 0xCu);
      std::ostream::operator<<(&std::cout, std::endl<char,std::char_traits<char>>);
      std::operator<<<std::char_traits<char>>((int)&std::cout, " Wrong password!\n");
      std::operator<<<std::char_traits<char>>((int)&std::cout, " =/");
    }

Name을 기준으로 시리얼 키 값이 생성된다. 생성로직도 간단할 뿐더더러 사실 모르더라도 동적디버깅으로 CodeEngn 이름으로 생성된 키값만 확인하여 그에 맞는 비번을 입력하면 된다

3. 풀이


CodeEngn ⇒ 0xE4C60D97 로 생성됨. 이를 10진수로 입력하면 끝이다

4. 몰랐던 개념


728x90

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

[CodeEngine] Basic RCE L18  (0) 2021.01.12
[CodeEngine] Basic RCE L17  (0) 2021.01.11
[CodeEngine] Basic RCE L14  (0) 2021.01.02
[CodeEngine] Basic RCE L15  (0) 2021.01.02
[CodeEngine] Basic RCE L09  (0) 2020.12.29