대망의 Level20입니다.
소스를 보니 마지막 문제는 포맷스트링이네요. 의외로 간단하지 않을까 싶습니다.
우선 쉘코드를 환경변수에 넣고 위치를 알아냅니다.
이제 DTOR의 위치를 알아내고 소멸자에 쉘코드 주소를 넣으면 쉘은 떨어집니다
아직 포맷스트링에 익숙하지 않으시다면 level11을 다시 보고 오셔도 됩니다.
nm으로 소멸자의 주소가 뜨지 않습니다. 다른 방법을 알아봐야 겠습니다.
Dtor의 주소가 0x8049594로 뜹니다. 그러나 DTOR_END는 이 주소의 +4인 0x8049598에 있습니다 우리는 DTOR_END에 쉘코드 주소를 넣을 것입니다.
그렇다면 이제 0xbffffc17을 0xbfff와 0xfc16로 나누어서 계산하고 넣기만 하면 되겠네요
그럼 공격은 이렇게 됩니다.
이렇게 모든 FTZ를 클리어 했습니다.
11 이후부터는 크게 자세히 설명하지 않은 부분도 있는데요
이것은 맛보기라는 것이고 좀 더 자세히 하는건 Load Of Bufferoverflow 부터입니다.
기초적인 Basic BOF부터 차근차근 다루게 됩니다.
자세한 설명은 거기서부터 시작하겠습니다.
Phantom@TeamH4C