Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 해당 프로그램에서 취약성을 이해하기 위해 ACCOUNT 구조체에 대한 이해가 필요합니다.
    • 해당 구조체는 전역 변수로 선언되어 있습니다.
    • 해당 프로그램은 3개의 ACCOUNT 구조체를 사용합니다.
      • 첫번째 구조체에는 'Admin' 계정 정보가 저장되어 있습니다.
      해당 구조체는 전역 변수로 선언되어 있습니다
      • 2,3번째 구조체는 사용자가 생성한 계정의 정보가 저장됩니다.
Panel
0x604240
gAccount[0]
Admin.state
gAccount[0]
Admin.number
0x604240
gAccount[0]
Admin.fd
gAccount[0]
Admin.bk
0x604240gAccount[1].stategAccount[1].number
0x604240gAccount[1].fdgAccount[1].bk
0x604240gAccount[2].stategAccount[2].number
0x604240gAccount[2].fdgAccount[2].bk
  • House of lore 취약성은 다음과 같은 Fake chunk가 필요합니다.


Panel



  • 다음과 같이 House of lore 취약성에 필요한 Fake chunk를 생성할 수 있습니다.
      해당 프로그램은 
      • delAccount() 함수를
      이용해 gAccount
      • 이용해 gAccount[
      *
      • 1].fd 영역에 Free chunk의 Head 주소를 저장 할 수 있습니다.


    Panel
    0x604240gAccount[0].stategAccount[0].number
    0x604240gAccount[0].fdgAccount[0].bk
    0x604240gAccount[1].stategAccount[1].number
    0x604240gAccount[1].fdgAccount[1].bk
    0x604240gAccount[2].stategAccount[2].number
    0x604240gAccount[2].fdgAccount[2].bk




    Code Block
    struct ACCOUNT{
        long state;
        long number;
        struct IDPW *fd;
        long bk;
    };

    ...