[ Dreamhack ] tcache_dup2
2022. 9. 7. 14:42ㆍdreamhack/pwn
반응형
https://dreamhack.io/wargame/challenges/67/
tcache_dup2
Description 이 문제는 서버에서 작동하고 있는 서비스(tcache_dup2)의 바이너리와 소스 코드가 주어집니다. 취약점을 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임
dreamhack.io
이 문제에서는 주의해야할 점이 있다.
바로 tc_idx가 낮은값을 갖지 않게 해야한다.
왜냐하면 tc_idx는 빈에 들어간 청크의 개수를 세는 녀석인데 0이면 tcache에 청크가 없다고 판단해서
할당할 때 tcache를 참조하지 않기 때문이다.
double free 를 이용하여 쉘을 획득하기 위해서는
allocate를 총 3번해야한다.
1. 더블 프리 후 tcached의 연결리스트를 조작하기 위해 할당
2. tcache의 연결리스트 조작 후 조작된 연결리스트를 재할당받기 위해 처음 double free에 이용한 청크 할당
3. 조작된 청크 할당
하지만 fd를 조작하여 free list에 tcache 청크는 충분히 있지만
tc_idx는 free를 할 때만 증가하는데 우린 free를 두번 했고 조작된 청크는 우리가 강제로 넣어준 것이기 때문에
2번만 할당이 가능하다.
이를 해결하기 위해 같은 크기의 청크를 넣어줌으로써 tc_idx의 값을 allocate 할 만큼 만들어줘야 한다..
반응형
'dreamhack > pwn' 카테고리의 다른 글
[Dreamhack] house_of_spirit (0) | 2022.11.01 |
---|---|
Return to csu [Dreamhack basic_rop_x64] (0) | 2022.10.01 |
[Dreamhack] tcache_dup (0) | 2022.09.07 |
[ Dreamhack ] hook, oneshot (0) | 2022.08.05 |
[ Dreamhack ] basic_rop_x86 (0) | 2022.07.31 |