[ Dreamhack ] tcache_dup2

2022. 9. 7. 14:42dreamhack/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