Leave a message for the admin.
Bug
Stack BOF in main()
Message를 입력받을 때 stack buffer overflow가 발생한다.
OOB read in get_choice()
idx
가 table
의 범위 내에 있는지 확인하지 않아서 OOB read가 가능하다.
get_choice()
의 return value를 출력해 주기 때문에, 스택에서 char
의 크기만큼의 범위에 있는 1바이트 값을 leak할 수 있다.
Exploitation
OOB read를 이용하여 canary와 PIE base를 leak한 후, stack BOF를 이용하여 main()
의 return address를 win()
의 주소로 덮으면 플래그를 획득할 수 있다.
728x90