[PWN] canary2

 

ida로 까봤다. thread를 생성할 수 있고, 입력을 받을 수 있다. 그리고 마지막에 read로 0x400만큼 입력 받을 수 있기에 bof가 가능할 것 같다.

입력을 받는 c2 함수의 내부이다. 한 바이트씩 입력을 받고 있다.

 

이 코드를 exploit 하기 위해서는 master canary와 thread stack에 대한 이해가 필요할 것 같다.

해당 내용들을 위의 블로그를 참고하였다.

짧게 요약하자면, 새로운 스레드를 생성하게 되면 해당 공간이 master canary가 존재하는 thread descripor보다 낮은 주소에 설정되는데, 때문에 새로 생성된 스레드 스택에서 bof가 가능하다면 master canary를 덮어쓸 수 있는 것이다.

 

그렇다면 이 방법을 이번 문제에는 어떻게 적용할 수 있을까?

  1. 먼저 1을 입력하여 thread를 새로 만든다.
  2. 2를 누르면서 master canary를 한 바이트씩 덮어쓴다.
  3. 2번 과정을 통해 덮어쓴 canary를 저장해놓고, 마지막 read 함수에서 bof를 일으킬 때 canary 부분에 알맞게 payload를 작성한다.

 

이러한 과정을 통해서 exploit이 가능할 것 같다. 이번엔 직접 익스 코드를 짜보지는 못했지만 다음번에는 꼭 해봐야겠다!

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤