지난 시간에 이어서 Bandit 문제를 풀어봅시다 Bandit Level 1 → Level 2 문제 풀이 ssh bandit1@bandit.labs.overthewire.org -p 2220password : NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL Bandit Level 1 → Level 2 문제는 홈 디렉터리에 저장된 - 파일을 읽어 비밀번호를 알아내는 문제입니다 이 문제는 ls 와 cat 명령어를 이용하여 비밀번호를 알아낼 수 있습니다 현재 파일명이 -로 되어있어 현재 경로를 지정하지 않고 그냥 파일명만 입력하면 - 파일을 읽어올 수 없습니다저처럼 cat - 명령어를 입력했다면 Ctrl + c로 글자가 입력되는 부분을 탈출할 수 있습니다-는 리눅스에서 예약된 특수문자로 인식하..
여태까지 공부한 리눅스는 이 Bandit이라는 워게임을 풀기 위한 준비였습니다 워게임은 해킹을 게임처럼 공부할 수 있게 만든 시스템이라 생각하면 됩니다 이 워게임은 여러 장르가 있는데 Bandit은 인기 있는 장르인 CTF(Capture The Flag) 방식입니다 CTF는 Flag를 구하는 장르로 각각의 시스템이나 문제마다 개발자가 Flag라는 비밀 코드를 숨겨놨는데 우리가 이 숨겨진 코드를 찾아내는 겁니다 지금까지 리눅스를 공부한 바탕으로 Bandit 워게임을 풀어나가 봅시다 Bandit 사이트를 리눅스로 접속해 보자 [Bandit 사이트 주소] OverTheWire: Level Goal We're hackers, and we are good-looking. We are the 1%. Level Go..
지난 시간에 프로그램의 출력 방향을 리다이렉션으로 바꿨는데, 이번 시간에는 입력의 흐름을 다른 곳에 넣을 때 사용하는 파이프에 대해 알아봅시다 PIPE 란? 파이프는 프로그램 사이에 연결되어 있는 빨대라 생각하면 이해하기 쉽습니다 이렇게 프로세스 간에 연결된 파이프를 통해서 데이터가 흐르게 됩니다 또한 프로세스의 출력이 다른 프로세스의 입력으로 들어갈 수 있습니다 그래서 파이프는 프로세스의 출력을 다른 프로세스의 입력으로 넣어주고 싶을 때 사용합니다 예를 들어 A라는 명령어(프로세스)의 결과를 파일로 저장하지 않거나 화면에 출력하는 것도 아니라면 오로지 이 결과를 다른 명령어(프로세스)에 넘겨주고 싶을 때 파이프를 사용합니다 이제 PIPE를 칼리 리눅스에서 사용해 봅시다 PIPE 실습하기 PIPE를 가장..
지난 시간에 데이터 스트림을 알아보면서 데이터의 흐름이 있다고 했는데 이번 시간에는 이 데이터의 방향을 바꾸는 리다이렉션을 공부해 봅시다 리다이렉션 : Re / direction (다시 방향) 즉 방향을 바꾼다는 게 리다이렉션입니다 Redirection 리다이렉션 실습 실습 전 Text Editor 강좌 때 만든 mv_test 파일을 이용하겠습니다 (없으면 생성해 주세요) 현재 cat 명령어의 결과 데이터가 standard output(표준 출력)으로 화면에 표시된 겁니다 이제 출력의 방향이 터미널 화면이 아닌 다른 파일로 향하게 방향을 바꿨습니다 방향을 바꿀 때, 사용하는 문자는 > 입니다 리다이렉션을 사용하니 터미널 화면에 mv_test 파일 내용이 출력되지 않고 musa_file라는 파일로 방향을 ..
우리는 운영 체제와 쉘을 통해 컴퓨터와 대화합니다 이 대화 과정에서 명령을 전달받은 운영 체제는 컴퓨터로 명령을 내려 데이터를 보내고 다시 사용자에게 출력 데이터를 보내게 됩니다 이번 시간에는 Data Stream에 대해 알아봅시다 Data Stream 이란 사용자가 컴퓨터에게 명령을 내릴 때 명령을 전달받은 운영체제가 컴퓨터 기계 장치로 향하는데 이를 입력 데이터라고 합니다 반대로, 컴퓨터 기계 장치에서 운영 체제를 통해 우리에게 전달되는 데이터를 출력 데이터라고 합니다 이때 입력되는 방향과 출력되는 방향의 데이터가 흘러가는데 이를 Data Stream이라 표현합니다 데이터 스트림은 크게 2가지가 있습니다 Input Stream, Output Stream 우리는 쉘을 통해 데이터를 주고받기 때문에 입력..
리눅스는 파일 권한 설정으로 사용자의 행동을 제한할 수 있습니다 그렇기에 각각의 파일과 디렉터리에 권한을 설정하는 방법이 중요합니다! chmod 명령어를 이용하여 권한을 설정하자 rwx 권한 강좌 때 만든 test_permission 파일에서 소유자 권한을 추가해 보겠습니다 기본적으로 권한을 변경할 때 사용하는 명령어는 chmod입니다 chmod [변경할 권한] [변경할 파일 또는 디렉터리] 권한 추가 + 권한 제거 - 소유자 u 소유 그룹 g 기타 사용자 o 이런 식으로 표현합니다 만약 소유자 권한에 실행 권한을 추가한다고 하면 (소유자 권한(u)에 실행 권한(x)을 추가(+)한다) : u+x 이렇게 소유자 권한에 x 기호가 생긴 걸 알 수 있습니다 여기서 다시 소유자 권한에서 실행 권한을 빼려면 (소..
지난 시간에 r, w, x 권한을 알아봤는데 이 외에 3가지 특별한 권한에 대해 공부해 봅시다 특별한 권한 3가지 (1) setuid : setuid가 설정되어 있다면, 파일을 실행했을 때 이 파일의 소유자 권한으로 실행됩니다. 대표적으로 passwd 명령어에 setuid가 설정되어 있는데 확인해 봅시다 ls -l /usr/bin/passwd passwd 경로에 권한 정보를 보면 소유자 권한이 rws라고 설정되어 있습니다 마지막 x(실행) 권한이 있는 자리에 특수 권한을 설정해두는데 소유자 권한에 s라고 표시되어 있는 게 setuid가 설정되었다는 의미입니다 만약에 x(실행) 권한이 있는지 없는지 확인이 안될 때가 있는데 s를 표현할 때, 대소문자를 구분합니다 소문자 s로 쓰면 실행 권한이 있으면서 se..
리눅스는 파일들로 운영되는 운영체제이기 때문에 파일의 접근과 이용만 통제해도 사용자의 행동을 제한할 수 있습니다 이번 시간에는 계정 별로 리눅스가 어떻게 권한을 부여하는지 알아봅시다 rwx 란? 파일과 디렉터리에는 3가지 권한이 있습니다 (1) r : read 권한으로 파일을 읽을 수 있는 권한입니다 파일의 내용과 디렉터리의 내용을 보는 것에 해당합니다 (2) w : write 권한으로 파일을 쓸 수 있는 권합니다 파일이라면 데이터를 수정할 수 있는지에 대한 권한이고, 디렉터리라면 디렉터리에 파일 또는 디렉터리를 생성할 수 있는지에 대한 권한입니다 (3) x : execute 권한으로 파일을 실행할 수 있는지에 대한 권한입니다 파일이라면 파일을 실행하는지에 대한 권한이고, 디렉터리면 디렉터리의 접근과 디..
지난 시간에 uid/gid를 공부하면서 모양이 다른 쉘을 접하게 되었는데, 오늘은 이 쉘에 대해 알아봅시다 passwd 파일을 알아보자 모양이 다른 쉘을 알기 전에 /etc/passwd 파일을 확인해 봅시다 /etc/passwd 파일은 리눅스 시스템에 등록된 계정 정보가 담긴 파일입니다 명령어를 실행해 보니 계정이 엄청 많습니다 /etc/passwd 파일에는 리눅스 계정 하나당 한 줄씩 정보가 저장됩니다. 그래서 사진과 같이 한 줄씩 계정이 존재하는 겁니다 맨 위에 있는 root 계정에서 각각 어떤 의미를 가지는지 알아봅시다 각 줄은 : (콜론)을 기준으로 데이터를 구분합니다 (1) 계정 이름 : 우리가 만든 계정 아이디입니다 (2) 비밀번호 : 현재 비밀번호 자리에 x라고 표시되어 있는데, 예전 리눅스..
컴퓨터는 어떤 특정한 사람만 쓰는 게 아니라, 여러 사람이 공유해서 사용할 수 있습니다 그러면 기본적으로 그 컴퓨터에 각 사람의 계정이 필요하게 됩니다 그래서 컴퓨터를 켜면 각자의 계정으로 로그인해서 컴퓨터를 쓸 수 있습니다 만약 이런 계정이 없다면 나의 민감한 정보나 파일들을 다른 사람들이 컴퓨터를 사용하면서 몰래 볼 수 있습니다 그래서 여러 사람이 하나의 컴퓨터를 같이 쓰기 위해 계정이 존재하는 겁니다 추가로 계정마다 특정 파일을 열지 못하게 하거나, 특정 명령어를 실행하지 못하게 할 수 있습니다 이렇게 각각의 계정 별로 권한을 부여할 수 있습니다 만약 계정이 root라는 글자라면 컴퓨터는 이 계정을 어떻게 인식할까요? 컴퓨터는 우리 눈에 보이는 글자를 실제로 컴퓨터 내부에서 처리될 때 전부 숫자로 ..