728x90
xshell에 연결했다.
안전하게 사용하기 위해.. gremlin을 복사해 g를 만들었다.
항상 시작전에 $ bash2 입력하기!
Analyze
- simple bof 문제
- strcpy 함수에서 buffer overflow 취약성이 나타나기 때문에 이 함수에 bof를 일으켜 문제를 풀면 될 것이다.
- buffer(256) + SFP(4) + RET(4) 이런식으로 넣으면 될 것 같다.
- argc가 2개 미만일 때(=명령어만 있는 경우) 오류메시지를 출력하고 종료한다.
- 위의 조건에서 통과된다면 인자로 입력한 argv[1]이 버퍼에 복사되고 그 주소가 출력될 것이다.
- 32bit
- not stripped
- dynamically linked
debugging
strcpy함수를 실행하여 buffer(스택)에 입력받은 인자를 저장하는 과정을 지난 시점에 breakpoint를 설정한다.
Payload
쉘 코드 이용
\x31\xc0\xb0\x31\xcd\x80\x89\xc1\x89\xc3\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f
\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80
41byte의 쉘 코드를 사용해보면
Buffer+SFP(260 = Dummy 215 + ShellCode 41 + Dummy 19) || RET(4)
리턴 주소로 buffer의 주소를 넣어준다. 이 때 buffer에 저장되는 shellcode에 도달하는 것이 목표이기 때문에 buffer 영역으로 리턴하게 하면 쉘 코드가 실행된다. 따라서, 스택 영역(EBP와 ESP 사이)의 임의의 주소를 리턴주소로 하면 된다.
SMALL
'System > PWNABLE' 카테고리의 다른 글
[POXX 2020] investigator (0) | 2021.01.19 |
---|---|
[LOB] gremlin → cobolt (4) | 2021.01.15 |
[Dreamhack] house_of_force (0) | 2020.11.08 |
[HackCTF] uaf (0) | 2020.09.20 |
first (0) | 2020.09.06 |