로딩
요청 처리 중입니다...

[FTZ] - level11/ Shell Code

 [FTZ] - level11/ Shell Code

ls를 통해 다른 문제와는 달리 attackme가 있는 것을 확인할 수 있습니다. ls -al을 통해 알아보니, setuid가 걸린 것을 확인할 수 있습니다. char str[256] str 배열을 256크기를 주었다. strcpy(str, argv[1]); argv[1]를 str에 복사해준다. strcpy함수는 입력 값의 길이를 검증하지 않기 때문에 버퍼 오버플로우에 취약한 함수입니다. gdb 도구를 통해 분석해보면 다음과 같습니다. esp, 0x108 : 전체 스택을 0x108만큼 할당해줬습니다. 0x108을 10진수로 표현하면 264byte입니다. 소스에서 str배열에 크기를 256을 줬는데, 스택에 264만큼 줬다는 것은 dummy값이 존재하는 것을 알 수 있습니다.

그래서 그림으로 정리해보면 다음과 같습니다. 여기서 RET에 실행시킬려는 쉘 코드의 주소 값을 넣으면 그 주소로 가게되고, 쉘 코드가 실행이 되게 하면 될 것 같습니다.

따라서 RET를 덮기 위해서 Str(256...

# ASLR # FTZ # Hackerschool # level11 # RTL # 해커스쿨