Profile

머리정리하는곳

c2w2m2

[HITCON2016] secretholder

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