unlink 페이크 청크 안만들어지는 예제 때려치고 그냥 잡았다.
괜히 예제에서 시간뺏겼다 ㅠㅠㅠ
대충 보면 keep = malloc, wipe = free, renew = read
쯤으로 볼 수 있겠다. keep 할때 각각 크기가 40 4000 40000 만큼씩 할당 해 준다.
heap 주소를 전역에 관리하게 된다. 그러면 unlink 를 하면 되겠구나 생각할 수 있고,
그럼 chunk header 를 어떻게 바꿀것인가 하면
keep 1, 2, 3 => wipe 1, 2, 3 => keep 3 => wipe 1 => keep 1, 2
꼴로 하게 해주면
[ 40000 byte ( 3번 ) ]
[ 40 byte ( 1번 ) ] [ 4000 byte ( 2번 ) ]
꼴로 되게 되어서 renew 3번으로 1번에 fake chunk 만들고 2번 chunk header 를 조작할 수 있다 ㅋㅋ
그럼 쓱쓱 싹싹 해주면 되겠다.
다음부터 코드는 gist 로 올려야 겠다. 포트폴리오 만들기도 좋고, 이쁘다 ㅋㅋ
'Pwnable' 카테고리의 다른 글
[MMA] Shadow (0) | 2018.01.10 |
---|---|
[Plaid] prodmanager (0) | 2018.01.07 |
[Noe] Card (0) | 2017.12.14 |
[Codegate] yocto (0) | 2017.12.12 |
[HITCON] start (0) | 2017.12.11 |