HackCTF - POET
우리에겐 양세호처럼 장소가 적혀있는 초대장은 없지만, 메모리 주소를 볼 수 있는 ida는 있으니 ida 로 일단 열어봤다.
dword의 값을 수정하면 대충 뭐가 되는거같다.
그리고 get_author 함수를 보니 unk_6024A0에 gets로 입력을 받고 있더라. gets는 오버플로우를 낼 수 있는 함수이니 unk6024A0의 실제주소를 알아낸뒤에 저 디워드 사이의 거리를 구해 덮어씌우면 될거같았다.
그리고 시 내용이 있는 부분을 보면 strtok로 특정 내용이있으면 100포인트를 주는데 그걸로 포인트를 채울려다간 메모리가 터진다.(배열 크기가 너무 작음.)
그래서 간단히 다음과 같이 풀었다.
unk_6024A0의 주소 알아내기 -> dword의 실제 주소 알아내기 -> 두 주소의 거리를 구하기 -> 그걸 빈값으로 채우고 dword값을 원하는대로 수정하기.
e0-a0 = 40(16) = 64(10)
폰툴로 쉽게 풀어보자.
Comments
Post a Comment