코드를 보니까 전달하는 인자는 최소 한개여야하는데..
문제는 stack destroyer네요.. buffer 값을 44만큼 초기화하고, buffer에서 48 더한곳부터 스택 전체를 0으로 초기합니다.
argv[2]를 사용할 수 없어서 ㅠㅠ...고민 좀 해볼께요.
LD_PRELOAD를 이용해야 풀 수 있다고 그럽니다.!
메모리에 공유 라이브러리 공간이 있는데 이 공간에 Shell code를 넣어놓고 (LD_PRELOAD 환경변수를 이용해서!)
그 주소를 가져다고 ret에 덮어쓰면 shell이 실행된대요.
한번 해보겠습니다.
gcc -fPIC -shared 옵션을 줘서 shell code가 들어간 이름으로 공유 라이브러리를 생성하고
LD_PRELOAD에 넣어줍니다.
그리고 실행시켜 core파일을 생성 후, 주소를 알아오기 위해 메모리 값을 봅시다.!
저는 0xbffff5f6부터 shellcode가 있더라구요!
바로 실행해보겠습니다.
성공!
'CTF 공부 > LOB' 카테고리의 다른 글
[LOB]darkknight (0) | 2020.01.29 |
---|---|
[LOB]golem (0) | 2020.01.27 |
[LOB]vampire (0) | 2020.01.24 |
[LOB]troll (0) | 2020.01.24 |
[LOB]orge (0) | 2020.01.24 |