완료됨
다른 풀이

문제는 buf에 어떠한 값을 넣고 ret에 buf주소를 넣는 방식으로 해결했습니다.

이떄 그냥 buf에 어떠한 값을 넣기 보다는 buf에는 쓰레기 값들을 입력해주고 bof로 ret에 직접적으로 값을 넣어서 실행시키면 안되는 것인가요?
왜 다들 ret에 buf의 주소를 넣는 방식으로 풀이를 하신 건가요..? 궁급합니당

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
Karatus
워게임: 50

쓰레기값을 넣어서 ROP(Return Oriented Programming)으로 풀 수도 있겠지만, 그러려면 libc base 주소를 알기 위한 루틴 + /bin/sh 같은 문자열 + system 함수 주소(libc base + system function offset) 이런식의 payload가 필요합니다.
하지만 문제에서 입력할 수 있는 길이가 ROP를 진행하기에는 불충분하기 때문에 위의 payload는 불가능합니다.

아니면 basic_exploitation_001의 문제처럼 아예 flag를 출력해주는 거저주는 함수가 존재한다면 충분히 할 수 있지만 없기 때문에 다른 방법을 모색해야 합니다.

결과적으로 적용된 방어기법이 하나도 없고 flag를 출력해주는 함수가 없기 때문에 간단하게 buf에 shellcode를 넣고 eip를 조작해 이 shellcode를 실행해서 쉘을 열어 flag를 보려고 하는 것입니다.

2021.07.04. 19:48