Is it time for a UAF challenge yet?
Bug
strchrnul()
은 문자열에 찾으려는 문자가 없으면 문자열의 끝 주소를 반환한다. 따라서 cur->name
에 old_char
가 포함되어 있지 않으면 cur->name
의 끝에 new_char
를 이어붙일 수 있다.
Exploitation
Off-by-one을 이용하여 name
을 play_game
포인터까지 연장할 수 있다.
이후에 play_game
에 저장된 calc()
의 주소를 win()
의 주소로 덮어쓰면 플래그를 획득할 수 있다.
728x90