SECUINSIDE 2017 - babyheap
team member를 음수로 넣을 수 있는데, 이를 이용하면 realloc(buf, 0)을 호출하여 버퍼를 free시킬 수 있다. 바이너리에서 이 경우를 따로 처리해주지 않기 때문에 이를 이용한 uaf를 통해 member pointer가 free_hook을 가리키도록 하여 수정할 수 있다. libc leak은 그냥 unsorted bin - 0x10 leak 나는걸로 해결 https://github.com/Eyebrowmoon/ctf/blob/master/secuinside2017/babyheap/solver.py
CTF
2017. 7. 2. 21:37
Christmas CTF 2016 - Nature Dream
처음 바이너리를 실행하고 10개의 메뉴에 당황했지만 풀어보니 나름 재밌었던 문제. 취약점은 위의 그림과 같이 사실 물고기를 17마리까지 구매할 수 있다는 점이다. 사실 나는 실행횟수 100회 제한 때문에 3400원 못 벌 줄 알고 이 부분 발견하고도 꽤 고민했는데 혹시 해서 실험해보니 너무 쉽게 가져서 좀 당황했다. 17번째로 구매한 물고기의 포인터는 자신이 가지고 있는 액수에 해당되는 변수를 덮어쓰는데, 이를 통해 heap memory leak을 낼 수 있음과 동시에 물고기 포인터들을 덮어쓸 수 있는 어항 이름 변경 routine으로 진입할 수 있게 된다. 이를 이용하기 위해 처음 바이너리를 시작하면 꽤 긴 값을 입력받을 수 있는 name buffer에 fake fish를 주소가 8 차이나도록 두 마리..
CTF
2016. 12. 25. 02:34