2016 Codegate bugbug writeup
St1tch
문제에는 NX말고는 다른 보호기법은 딱히 안걸려있다. 문제 자체도 name입력, 서버상의 랜덤번호 6개를 맞추는 식으로 되어있다. 취약점은 서버의 랜덤번호 6개를 맞추면 이동하는곳에 있다. 보면 printf 함수를 호출하는데 name을 입력받은 버퍼의 주소를 그대로 인자로 넣어주고있다. 따라서 여기서 FSB취약점이 발생한다. 일단 FSB공격을 하기위해 서버의 랜덤번호를 맞추야 하는데 스택의 구조를 잘 살펴보면 name의 길이를 100으로 채우면 뒤에 4바이트에 seed값이 있기 때문에 seed값을 leak할 수 있다. 이러한 스택프레임 구조를 가진다. 먼저 seed값을 leak한 뒤, 그 값을 이용해 랜덤번호를 먼저 맞추고 난 뒤 fsb취약점을 이용해 libc의 주소를 leak하고, exit의 got를 ..