해당 계정 또한 ls -l로 파일 및 디렉터리를 확인 후. c파일을 열어 소스코드를 확인함.
해당 소스코드를 보면 나머지는 이전과 전부 동일하지만 인자 값이 하나만 입력받도록 되어있다. 또한 argv [0] 값도 버퍼가 초기화되듯 초기화된다. 흠... 그럼 여기서 쓸 수 있는 방법은 argv [0]을 사용하는 것이다.
이번 문제도 ln -s 심볼릭 링크를 사용하면 풀 수 있을 거 같다.
이번에도 rename은 권한 문제로 되지 않는다.
이번엔 argv [0]의 주소를 알아내야 한다.
작업을 위해 tmp 디렉터리 생성 후 tmp디렉터리에서 작업을 해보자
이번에도 마찬가지로 core dump를 사용할 것이다.
앗 여기서 실수를 했다.. 여기서 argv [1]의 값이 사라지므로 argc [0] 즉 파일 이름을 기록하기에 보기쉽게 파일이름을 바꿔 실행했다. 여기서는 권한 문제가 없으므로 rename을 사용했다.
파일 이름에 쉘 코드를 삽입하였으니 쉘코드 처음 \xeb\x11 를 찾아보니 0xbffffbb8 주소값이 나왔다!!
아 참고로 이번엔 쉘코드를 다른 걸 사용하였다.
\x2f는 "\"를 가리키기 때문에 디렉터리 구분 인자로 본다. 그러므로 \x 2가 없는
\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81
이 코드를 사용하였다.
이제 심볼릭 링크를 이용하여 원본 파일과 일치하는 쉘 코드가 담긴 파일을 생성하자
자 이제 payload를 작성해보자
성공적으로 쉘을 획득하고 패스워드를 알아낼 수 있었다!!!
'WriteUP' 카테고리의 다른 글
Simple_size_bof (0) | 2021.05.21 |
---|---|
64bof_basic (0) | 2021.05.21 |
[LOB] darkelf (0) | 2021.05.20 |
[LOB] wolfman (0) | 2021.05.20 |
[LOB] orc (0) | 2021.05.19 |