Level13
level13의 계정으로 접속한 후, hint를 확인해보면 다음과 같습니다.
attackme의 소스코드입니다. attackme는 setuid가 걸려있어 디버깅을 하는데 어려움이 있으므로, 이 코드를 이용해 파일을 만든 후, 그 파일을 분석하였습니다.
gdb를 이용하였습니다. 중요한 부분은 ebp-12 번째에 위치해 있는 값과 0x1234567을 비교한다는 것입니다. 이런 방식으로 BOF를 방어하는 방법을 스택가드( Stack Guard )라고 합니다. 우회하기 위해서는 ebp-12에 0x1234567의 값을 넣어주면 될 것 같습니다. main+79에 Bp를 걸고 좀더 상세하게 분석을 해보았습니다.
분석 결과, ebp-12 와 SFP 사이에는 8byte만큼의 Dummy가 존재함을 알 수 있습니다. RTL을 이용하여 우회하기 위해 system 함수의 주소, /bin/sh의 주소, libc의 ASLR 적용 여부를 확인하였습니다. 구하는 방법은 이미 level11에서 했기 때문에 생략하겠습니다. payload를 도식화해보면 다음과 같습니다.
Payload를 입력해보면, 다음과 같이 level14의 Shell이 실행됨을 알 수 있습니다.
my-pass를 이용하여 level14의 Password를 알 수 있습니다.
No comments:
Post a Comment