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

[CodeEngn] Basic RCE L06

728x90

1. 문제


1) 문제 확인

OEP를 찾고 시리얼 키를 입력하면 된다

UPX로 패킹되어있다. 걍 UPX로 패킹을 풀면 OEP는 걍 찾을수 있다

2) 코드흐름 파악

int sub_401030()
{
  GetDlgItemTextA(hWnd, 1000, Str2, 100);
  if ( !strcmp(Str1, Str2) )
    MessageBoxA(hWnd, "You got it ;)", "Good Job!", 0x40u);
  else
    MessageBoxA(hWnd, "Wrong serial!!!", "ERROR", 0x10u);
  return 0;
}

내가 다이얼로그에 입력한 값은 Str2에 들어간다. Str1은 AD46DFS547 으로 박혀있다.

2. 접근방법


끝이다. OEP는 imageBase+EntryPoint로 계산하면 끝이다.

3. 풀이


OEP : 00401360

Serial : AD46DFS547

4. 몰랐던 개념


UPX는 알려진 패킹 기법으로 초기 pushad 명령어로 현재 레지스터들의 값을 스택에 저장한 뒤, 언팩 로직을 거치고 다시 popad 명령어로 복원 시킨뒤 OEP로 뛴다.

728x90

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

[CodeEngine] Basic RCE L15  (0) 2021.01.02
[CodeEngine] Basic RCE L09  (0) 2020.12.29
[CodeEngn] Basic RCE L07  (0) 2020.12.28
[CodeEngn] Basic RCE L05  (0) 2019.05.17
[CodeEngn] Basic RCE L04  (0) 2019.05.16