Protostar Heap0 [구조체활용]

2017. 6. 14. 14:59SystemHacking/Protostar




Protostar Heap0번 문제입니다

[ 그림1 ]


힙에서의 메모리 구조는 스택의 구조와는 반대로 생각하시면 됩니다( First-in-Frist-out )

임의로 인자를 주어 파일을 실행시켜보면 포인터 d와 f의 주소가 나와있습니다

이를 이용해 메모리 구조를 그려보자면 다음과 같습니다

[ 높은 주소 ]

[ Stack ]

[ f ]

[ dummy (6byte) ]

[ d ]

[ 낮은 주소 ]


[ 그림2 ]


포인터 d가 가리키고 있는 구조체 data의 name변수를 버퍼 오버 플로우 시키고 나머지 dummy값도 버퍼오버플로우시킵니다

그리고 objdump명령어를 사용하여 알아낸 winner()함수의 주소를 포인터f의 값으로 덮어 씌우면 공격성공입니다