OWASP WebGoat

Buffer Overflows - Off-by-One Overflows



Buffer Overflows 카테고리로 넘어왔습니다. 웹앱 내에서의 BOF를 다룰 것 같네요. 지문을 보도록 합시다.



지문을 확인 해 보니 VIP 손님이 묵는 곳이 어떤 방인 지 찾아내라고 합니다.

별다른 힌트가 없으니 소스 코드 상에 뭔가 있을 것 같습니다. [Java Source]를 눌러 소스를 확인 해 보도록 하겠습니다.




쭉 훑어 보니 param3의 길이가 4096을 넘어 갈 때 VIP의 이름과 방 번호를 뱉어내는 분기문이 있습니다.

위 쪽의 체크 박스를 확인 해 보면 Param1, Param2, Param3는 각각 First Name, Last Name, Room Number를 나타내는 것을 알 수 있습니다.

여기서 소스 상에 나타난 First Name과 Last Name, Room Number를 이용하여 바로 세션을 패스 할 수도 있겠지만, 정석으로 풀어내기 위해 Room Number에 4096을 넘어가는 길이의 값을 넣어보도록 합시다.




python을 이용해 4097개의 문자열을 만들었습니다.



자, 그럼 이 값을 복사 해 둡시다.



위에서 복사한 값을 Room Number에 기입 해 주고 Submit을 해줍니다.



이 곳은 별 다른 의미가 없으니 바로 Accept 해줍시다.



의도 한 대로 문구가 나타났습니다. 세션을 완료하기 위해 Restart 후 첫 번째 VIP의 이름과 방 번호를 입력 해 봅시다.



Johnathan/Ravern/4321을 기입해 준 후 Submit을 눌러주면




짠! 끝났습니다.








+ Recent posts