Information Security ˗ˋˏ ♡ ˎˊ˗

Security/WebHacking

[WebGoat] Buffer Overflows / Off-by-One Overflows 풀이

토오쓰 2022. 12. 28. 15:31

실행환경: burf suite, WebGoat

 

 Buffer Overflows 정의

공격 공격 유형 대응방안
버퍼
오버플로우
스택(Stack)이나 힙(Heap)에 할당되는 메모리에 문자열 등이 저장될 때 최초 정의된 메모리의 크기를
초과하여 문자열을 저장하는 경우 예기치 않은 결과가 발생하는 보안약점
1) ASLR(주소 공간 배치 난수화)
메모리 공격 방어하기 위해 주소 공간 배치를 난수화


2) Stack Guard (스택 가드)
​RET, 복귀 주소 근처에 '카나리아'라는 특수 문자열 넣어 방어

3) Stack Shield (스택 쉴드)
함수 시작 시 복귀 주소를 Global RET에 저장하여 함수 종료 시 저장된 값과 스택의 RET 값을 비교

 

문제

VIP 손님이 쓰는 방은 어떤 방인지 찾는다.

Show Source를 클릭하면 JAVA 코드가 나오는 것을 확인할 수 있다.

그중에서 IF문에 param3.length()이 4096을 넘어가면 VIP 이름과 방 번호를 알려주는 코드가 존재한다.

param3는 Room Number이므로 4096이 넘어가는 길이의 값을 넣는다.

 

Python으로 4097 길이의 문자 만들기

사용했던 파이썬 실행 사이트

https://replit.com/languages/python3

 붙여넣기

문자열 넣었을 때, VIP의 이름과 성을 넣어야 한다고 했기 때문에

코드에서 보았던 이름과 성을 넣고 방 번호를 a(4097개) 문자열로 넣었을 때, 완료되었다!

완료

 

정확하게 완료가 되려면 Room Number를 소스코드에 적혀있던 번호로 적어주면 된다.