level 12 로그인 후 hint를 본다.
level 12는 level 11과 비슷하지만 여기서는 gets 함수가 나왔다.
gets 함수도 strcpy와 같이 BOF에 취약하므로 BOF를 일으켜야 한다.
level 11과 다른 점은 level 11에서는 인자로 받았지만, level 12에서는 gets 함수로 입력받는다.
level 12에서는 포맷 스트링 버그는 없다.
다른 건 이것밖에 없고 str 256byte, dummy 8byte까지 같다.
gets 함수로 입력 전달 방식이 바뀌었으므로 어떻게 입력을 넘겨줘야 할지 생각해야 한다.
pipe( | )
pipe란 2개의 프로세스를 연결해주는 연결 통로를 의미한다.
앞에 실행한 명령어의 출력 결과를 뒤에 실행하는 명령어의 입력 값으로 넣어준다. 앞의 출력 결과를 뒤에 실행하는 명령어의 입력으로 보내줌으로 인해 파이프를 사용하면 여러 명령을 동시에 연결해 사용할 수 있다.
예를 들어 왼쪽 명령어의 결과(output)를 오른쪽에 있는 명령어에 입력(input)으로 전달한다.
즉, 좌측의 stdout을 우측의 stdin으로 된다고 생각하면 된다.
level 11에서 만든 eggshell, realaddr로 주소를 알아준다.
표준입력을 지원하는 명령어인 cat를 입력해야 한다.
한 번에 두 가지 명령어를 사용하기 위해서는 ";"을 사용하기로 배웠다.
그리고 앞 명령어를 뒤 명령어에 입력으로 주기 위해 파이프로 cat의 출력을 attcackme의 표준 입력으로 바꿔준다.
python과 cat의 조합으로 나온 표준 출력을 한 번에 넘기기 위해 괄호를 사용한다.
위 설명과 같이 입력하면 BOF가 일어나서 쉘을 얻을 수 있다.
'System Hacking > 해커스쿨 F.T.Z Hacking Zone' 카테고리의 다른 글
해커스쿨 F.T.Z Level 14 (0) | 2020.02.24 |
---|---|
해커스쿨 F.T.Z Level 13 (0) | 2020.02.24 |
해커스쿨 F.T.Z Level 11 BOF(Buffer OverFlow) (0) | 2020.02.23 |
해커스쿨 F.T.Z Level 10 (0) | 2020.02.19 |
해커스쿨 F.T.Z Level 9 (0) | 2020.02.18 |
댓글