Wargame/H4C

System Hacking - Notepad

wyv3rn 2023. 7. 1. 16:41
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

 

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int v4; // [rsp+4h] [rbp-Ch] BYREF
  size_t size; // [rsp+8h] [rbp-8h] BYREF

  init(argc, argv, envp);
  v4 = 0;
  size = 0LL;
  while ( 1 )
  {
    menu();
    _isoc99_scanf("%d", &v4);
    switch ( v4 )
    {
      case 1:
        writememo();
        break;
      case 2:
        editmemo();
        break;
      case 3:
        readmemo();
        break;
      case 4:
        removememo();
        break;
      case 5:
        showlist();
        break;
      case 6:
        if ( !toggle )
        {
          printf("size: ");
          _isoc99_scanf("%llu", &size);
          comment = malloc(size);
          puts("Send your comment!!");
          read(0, comment, size);
          toggle = 1;
        }
        break;
      default:
        continue;
    }
  }
}

 

2.2. 분석

메모를 쓰고 읽고 지우고 리스트를 볼 수 있고, 더불어 원하는 size만큼 comment를 쓸 수 있다.

 이 모든 것을 heap을 통해 관리한다.

 

3. 취약점 확인 및 공격 준비

3.1. 취약점

unsorted bin leak + heap overflow

3.2. 공격 준비

문제를 딱 보자마자 heap 문제이다.

heap overflow를 통해 fake chunk를 생성하며 다음에 값을 쓸 위치를 조작할 수 있기에

이를 통해 hook overwrite를 하면 된다. 

 

6번 메뉴는 왜 필요하지...?

728x90
반응형