어제 점심에 면접보고 vm를 키는 와중에 저도 모르게 리눅스를 시원하게 날려버렸습니다...
덕분에 올리려고했던 글로 강제로 비공개하게 되었고 공부도 제대로 못한것 같고

뭐하나 풀리는게 없던 하루였는데 워게임 문제가 한번에 익스가 되서 잠은 기분좋게 잘수 있을 것 같습니다
문제 제목을 보고 어느정도 짐작할 수 있었습니다 PIE가 걸리 BOF 문제이겠구나..
checksec을 통해 어떤 보호기법이 활서화되어 있는지 보면 PIE와 NX가 활성화 되어있습니다 RELRO는 지금 제 지능에선 생략하고 나중에
사실 PIE부터 설명하고 문제 풀이를 하던 해야하는데 금붕어 brain이라 금방 공부한걸 까먹어버려서 풀이만 하겠습니다
IDA로 main function을 확인해보면 welcome이라는 함수를 호출하고 이후에 printf문 하나 달랑있습니다
welcome함수에서는 j0n9hyun을 물어보면서 welcome함수의 주소를 출력해주고
scanf함수를 통해 문자열을 입력받습니다. <-- 이부분에서 BOF가 발생할 것이고
j0n9hyun을 물어보는 것이 수상(?)해서 해당함수를 보게되면 Flag를 출력해주는 함수였습니다
그럼 welcome함수에서 출력해주는 welcome()함수에서 j0n9hyun함수까지의 위치를 빼고 그값을 ret에 넣어주도록 코드를 짜서 익스를 해주면 FLAG가 출력 되겠죠
결국 PIE를 아는지 모르는지에 대한 문제인것 같은데
문제 푸는것에만 정신이 팔려있었던 것 같습니다. 보호기법 관련해서도 한번 다뤄보는 걸루