스택과 라이브러리로 점프하는 것이 불가능하다.
또 바이너리를 활용해야 한다.
우선 쉘코드를 올리고 해당 주소를 찾았다.
gdb로 돌리면서 argv[1]의 주소를 알아냈다. (어차피 코어 분석할거라 의미는 없다)
RET에 leave-ret을 집어넣는 것으로 Fake EBP 기법을 이용해 공격하기 위해 leave-ret 가젯을 구했다.
처음에 구한 주소는 되지 않았기에 core파일을 분석하여 내부에서 buffer의 주소를 찾고,
해당 주소-4를 SFP 자리에 집어넣어야 한다.
맨 처음 일어나는 leave로 인해 SFP에 집어넣은 주소에 EBP가 옮겨가고,
두 번째로 집어넣은 leave-ret 가젯으로 인해 한 번 더 leave가 실행되어 ESP가 buffer를 가리키게 되고
따라서 ret이 실행되면서 buffer의 첫 4바이트가 EIP에 들어가게 된다.
이를 이용해 공격에 성공했다.
'Wargame > Lord of Buffer overflow' 카테고리의 다른 글
LOB Redhat : zombie_assassin > succubus (0) | 2015.12.24 |
---|---|
LOB Redhat : giant > assassin (0) | 2015.11.03 |
LOB Redhat : bugbear > giant (0) | 2015.11.03 |
LOB Redhat : darkknight > bugbear (0) | 2015.11.02 |
LOB Redhat : golem > darkknight (0) | 2015.10.17 |