re-resolve in got

문제를 풀다가 뭔가 이상한 아이디어가 떠올라서 정리를 해본다.

got overwrite가 가능하면 해당 got를 덮어써서 control flow 하이잭킹이 가능하다.

근데 만약 leak을 할 수가 없다면, 원래 got에 있던 진짜 libc 함수의 주소가 덮어져서 더 이상 해당 함수를 다시 사용이 불가능한데…

이때 든 생각이 그럼 다시 resolve 코드 ( plt에서 3번째 코드 ) 주소를 덮어나서 다시 resolve를 시키는 것이다.