Can you win the Arena?
Bug
do_skill_change()
에서 isAttack
에 음수가 들어갈 수 있어 OOB가 발생한다.
Exploitation
SkillTabel
의 앞쪽에는 Team
구조체 2개로 구성된 Teams
가 있다.
Teams
내부에는 Equip
의 Name
필드가 있는데, 이 필드에는 change_equip()
에서 임의의 0x20
바이트 값을 입력할 수 있다.
이 위치에 win()
의 주소를 써 놓고 do_skill_change()
에서 player->Skills[destSkill].Skill_Func
에 OOB를 이용하여 win()
의 주소를 넣으면 그 스킬을 사용할 때 win()
이 호출되어 플래그를 획득할 수 있다.
728x90