이번 시간에는 Bandit Level 12, 13, 14까지 문제 풀이 후, 달고나 문서 p.27 ~ 34까지 읽었습니다! 이전에는 다뤄본 적이 없었던 SSH, telnet, nc 등을 다루다 보니 굉장히 어려웠지만 우여곡절 끝에 이번 주도 잘 마무리하였습니다~~!
-> data.txt 파일 내에 있는 여러 번 압축된 파일을 풀어서 비밀번호 찾기
bzip2, gzip, tar 등 압축 명령어를 공부하는데 큰 도움이 되었다.
-> bandit14만 접근할 수 있는 비밀번호 파일에 권한이 없으니 priavte SSH key를 이용해 localhost로 bandit15에 접속하기
localhost 내에서 port 30000인 네트워크에 접속하기
nc (netcat) : TCP, UDP 같은 프로토콜에서 데이터를 읽고 쓸 수 있는 유틸리티. cat이 리눅스에서 파일을 읽는데 쓰이니까 netcat은 네트워크를 읽거나 쓸 수 있다는 뜻이다.
telnet : 텔넷은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜로, 인터넷을 통해 원격지 호스트 컴퓨터에 접속할 때 지원되는 인터넷 표준 프로토콜이다.
달고나 문서 p.27 ~ p.34
前 기수 분들이 p.27 ~ p.44까지 진도를 나가셨길래 저희도 처음엔 그렇게 하려고 했는데 공부하는데 약 40분 정도의 시간밖에 남지 않았고, 앞부분 복습도 조금 필요해서 p.34까지만 진행하였습니다! 여기까지 읽는 것도 겨우 끝냈답니다,,
이번 주는 효주님이 정리하신 내용을 올립니다!
5. Buffer overflow의 이해
버퍼(buffer) : 시스템이 연산 작업을 하는 데 있어 필요한 데이터를 일시적으로 저장하는 곳
대부분의 프로그램에서 버퍼를 스택에 생성
스택 -> 함수 내에서 선언한 지역변수 저장&함수 끝나면 반환
malloc()과 같은 반영구적 데이터 저장공간과는 다른 것
buffer overflow : 미리 준비된 버퍼의 크기 < 데이터 크기 일 때 발생
40바이트의 스택 준비
40바이트 보다 큰 데이터를 쓰면 버퍼 넘침
에러 발생
버퍼오버플로우 공격은 공격자가 메모리 상의 임의의 위치에 원하는 코드 저장
return address가 저장되어 있는 지점에 그 코드의 주소를 넣음
EIP에 공격자의 코드가 있는 곳의 주소를 넣음
공격자는 버퍼가 넘칠 때(=버퍼에 데이터를 쓸 때) 원하는 코드를 넣을 수 있음
strncpy함수는 몇 바이트를 저장할지 지정해줌
strcpy함수는 길이 체크 X
데이터에서 NULL을 만날 때까지 복사
Byte order
바이트 정렬 방식 : 데이터가 저장되는 순서가 바뀐 이유
바이트 순서
big endian
: 낮은 메모리 주소 -> 높은 메모리 주소
little endian
: 높은 메모리 주소 -> 낮은 메모리 주소
공격코드의 바이트를 정렬할 때 byte order의 문제 고려
ex) little endian 시스템에 return address 값을 넣을 때는 바이트 순서를 뒤집어서 넣어야 함
return address 위의 버퍼 공간이 쉘 코드를 넣을 만큼 충분하지 않을 때
다른 공간을 찾아봐야 함
return address 이후의 공간이 부족할 경우 return address 이전의 버퍼 공간 활용
이 공간도 부족하다면 return address 부분만을 제외한 위아래 공간 활용
다음 시간 준비
→ bandit 15, 16, 17 풀어오기. 달고나 문서 p.34 ~ p.44까지 읽을 예정.
'3. Pwnable (포너블) > 2) 개념 정리' 카테고리의 다른 글
[2021. 09. 04] 해커스쿨 F.T.Z를 통한 리눅스 기초 명령어 습득 (0) | 2021.09.04 |
---|---|
[2021.05.22] 8주차 : Bandit Level 15,16,17->18 | 달고나 문서 p.34 ~ ~ p.44 (0) | 2021.05.22 |
[2021.05.8] 6주차 : Bandit Level 10,11,12->13 | 달고나 문서 p.13 ~ p.27 (0) | 2021.05.08 |
[2021.05.1] 5주차 : Bandit Level 6, 7, 8, 9 -> 10 | 달고나 문서 p.1 ~ p.12 (0) | 2021.05.01 |
[2021.03.27] 4주차 : C언어 기본 다지기(3), Bandit Level 3~5 (0) | 2021.03.27 |