how2heap
[how2heap] tcache poisoning
2025.07.02
https://wargames.ret2.systems/level/how2heap_tcache_poisoning_2.27대충 2.27 버전만 정리해보았다.tcache poisoning 이란?tcache에 있는 free chunk의 fd(다음 청크 포인터)를 덮어서, 다음 malloc()이 원하는 주소를 반환하게 만드는 공격 기법free된 청크는 tcache bin에 들어가고 `tcache[0x40] → chunk1 → chunk2 → NULL` 이런식으로 단방향 리스트로 연결이된다.fd를 덮으면?다음 malloc 시 그 주소를 반환하게 된다. (tcache 는 fd를 따라가며 chunk를 pop하기 때문)double free 보호도 우회가 가능하다. (보호 로직은 fd== tcache[bin]일 때만 탐지..
how2heap
[how2heap] overlapping_chunks
2025.05.22
heap Chunk 란?header 포함한 영역 + malloc()으로 할당 받는 영역header (prev_size + size)prev_size : 이전 청크의 크기로 크기가 128bit 이상인 chunk가 free될 때, 다음 청크 prev_size가 세팅fastbin을 free할 땐 항상 0으로 유지, PREV_INUSE bit가 0이 되어야만 세팅근데 실제로 돌려보니까 최신 우분투 버전에서는 8bytes만 header로 저장한다.(prev_size, FD,BK에 대한 정보가 저장되지않음을 확인할 수 있다.)size : 현재 청크의 크기로 하위 3bit는 flag로 쓰인다.PREV_INUSE(0x1) : 이전 chunk가 사용중 또는 fastbin일 때 설정되는 플래그IS_MMAPPED(0x2) ..
let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });