스택과 라이브러리로 점프하는 것이 불가능하다.

또 바이너리를 활용해야 한다.

우선 쉘코드를 올리고 해당 주소를 찾았다.

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에 들어가게 된다.

이를 이용해 공격에 성공했다.

블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요