[CTF Write Up] DICE CTF 2024 qual - boogie-woogie : 1-byte swap primitive to ROP
Out-Of-Bounds 취약점이 있는 바이트 스왑 함수가 있다. 1. 바이너리 영역에서 발생하는 Out Of Bounds 이므로 적당히 offset을 때려맞춰서 Heap 영역 주소를 얻는다. (Heap의 Top Chunk가 굉장히 크다는 것을 이용해서 임의의 탑 청크 내에 바이트를 스왑하고, 계속 주소를 줄이는 방식을 이용하면 경우의 수를 크게 줄일 수 있음) 2. Top Chunk의 size를 덮어서 크기를 작게 만든 후 scanf가 매우 큰 버퍼를 할당하게 만들면, Unsorted bin에 청크를 하나 넣을 수 있다. 이후 Unsorted bin의 fd에서 libc 주소를 leak 한다. 3. envrion 변수를 통해 stack 주소까지 leak 한다면 이제 ROP를 할 수 있다. 4. 이때 바이..
2024.02.05