본문 바로가기

포너블/lob

lob 3번

이번에는 3번입니다. 이번에도 bash2 설정부터 해주겠습니다.

위의 사진에서 3번 문제 코드를 보면 2번과 비교했을때 버퍼의 크기는 같지만 인자가 사라지고 대신에 표준입력인 gets함수가 사용되었습니다. 그렇기 때문에 2번 문제와 같은 방법인 환경변수를 쓸 것이지만 페이로드 작성방식을 좀 다르게 해주어야 합니다.

저번과 같이 환경변수를 등록해주었습니다.

그리고 위와 같은 환경변수의 주소를 구하는 코드는 다음 코드를 사용했습니다.

그리고 나서 환경변수가 잘 등록 되어 있는지 확인하기 위해서 env 명령어를 통해 확인해보았습니다.

확인해 보니 제가 등록한 shellcode가 잘 등록되어 있습니다.

그리고 2번 설명에서 했던 것처럼 주소를 구하면

위와 같습니다.

1,2번처럼 페이로드를 ./gremlin ~~. ./cobolt ~~이런 식으로 페이로를 보내게 되면 모두 함수의 인자로 인식하게 됩니다. 그렇기 때문에 gets함수 처럼 길이 제한이 없는 취약점이 있는 표준입력 함수를 공격하는 페이로드는 (페이로드)./파일이름의 방식으로 공격하여야합니다. 이 방식은 나중에 문제를 풀 때 필요할 것 같기 때문에 기억하는 것이 좋을 것 같습니다.

위의 삽질은 환경변수의 주소를 잘못 구할경우 제대로 작동하지 않는 것을 알 수 있습니다. 위와 같은 페이로드를 통해 다음 문제 비밀번호인 hackers proof를 구했습니다.

'포너블 > lob' 카테고리의 다른 글

lob 6번  (0) 2020.01.05
lob 5번  (0) 2020.01.05
lob 4번  (0) 2020.01.05
lob 2번  (0) 2020.01.04
lob 1번  (0) 2020.01.04