modify_heap??

Double free를 쓰지 않고 청크를 1번만 Free한 다음에
Modify_heap으로 next 포인터를 got 주소로 변경후 익스플로잇을 시도해봤습니다.
그런데 우분투 18.04 버전에서는 익스플로잇이 성공적으로 됐지만
우분투 20.04 버전이랑 리모트에서는 tcachebins 에 got 주소가 들어가긴 했지만
막상 malloc을 하면 tcachebins에 들어간 got 주소가 아니라 heap에 할당이 됩니다.

어떤 이유로 이런 결과가 나오는지 알려주신다면 감사하겠습니다 ㅠㅠ

#pwnable
작성자 정보
답변 2
Karatus
워게임: 50

말로만 들어서는 잘 모르겠네요.
다만 로컬에서는 18.04는 되고 20.04는 안된다고 하시는 걸 봐서 라이브러리 버전의 차이 때문에 발생하는 문제임에는 틀림없을 것 같네요.
디버깅 잘 해보셔서 동작 하나하나 봐보시길 바랍니다.

2021.09.29. 22:45
avatar
Sechack
CTF First Place

ubuntu 20.04에서는 18.04와 다르게 익스할때 tc_idx라는걸 신경써서 하셔야 할겁니다. 빈에 들어간 청크 개수를 카운트하는 녀석으로 알고있는데요. 이녀석이 0이면 tcache_bin에 청크가 없다는 뜻이므로 tcache_bin을 참조하지 않을거에요.

2021.09.30. 12:40
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기