Search this site
Embedded Files
Cosmopolitan72
  • Home
  • Blog
    • Branch
      • Windows
      • Algorithm
      • pip
      • Py
      • EXEL
      • linux
      • 01.11
      • Programming
      • 365
      • Korean
      • Ethics
      • OS
      • Cryptography
      • Banch
      • Network
      • Security
      • Emergency
      • DB
      • Git
      • Q & A
      • C
      • JS
      • 3
      • S
      • Security_2
      • 3_MAIN
      • SW
      • Cryptography_2
      • AI
      • Cloud
Cosmopolitan72
  • Home
  • Blog
    • Branch
      • Windows
      • Algorithm
      • pip
      • Py
      • EXEL
      • linux
      • 01.11
      • Programming
      • 365
      • Korean
      • Ethics
      • OS
      • Cryptography
      • Banch
      • Network
      • Security
      • Emergency
      • DB
      • Git
      • Q & A
      • C
      • JS
      • 3
      • S
      • Security_2
      • 3_MAIN
      • SW
      • Cryptography_2
      • AI
      • Cloud
  • More
    • Home
    • Blog
      • Branch
        • Windows
        • Algorithm
        • pip
        • Py
        • EXEL
        • linux
        • 01.11
        • Programming
        • 365
        • Korean
        • Ethics
        • OS
        • Cryptography
        • Banch
        • Network
        • Security
        • Emergency
        • DB
        • Git
        • Q & A
        • C
        • JS
        • 3
        • S
        • Security_2
        • 3_MAIN
        • SW
        • Cryptography_2
        • AI
        • Cloud

<

Linux

º 리눅스를 쓰는 이유  

윈도우 / 리눅스 

윈도우 만큼 리눅스도 널리 사용되고 있습니다.

리눅스 운영체제를 모르면 앞으로 배움에 있어서

큰 장애물이 생긴 것과 같습니다.

º 리눅스의 역사

Ms dos -> Unix -> Windows, Mac -> Linux 

Richard Matthew Stallman  : 오픈소스 쓰자 

Linus Benedict Torvalds : 리눅스 프로젝트 진행 

리눅스는 소스코드 개방! -> 자기 입맛대로 수정(커스터마이징) -> Debian, Ubuntu, Kali linux ..

open source

리눅스는 그래서 오픈소스로 풀어버림.

그만큼 많은 사람들이 쓰다 보니, 취약점 패치가 빠름.

BUT

ios는 정보가 별로 없어서 뚫기 힘듬. 

그런데 이 말은 아직 발견되지 않은 취약점 있을 수도 있다는 얘기, 

취약점을 공개하지 않고 악용하는 경우도 있음. 

그래서?

리눅스의 장점: 보안이 좋음, 속도 빠름 등 

º CLI 

Command line interface 

글자를 통해 명령을 내리는 것을 의미 

그리고, 다른 컴퓨터의 제어권을 가져올 때, GUI를 가져올 수 없음

그래서 CLI를 배울 필요가 있는 것

EX) 도스, cmd, bash, Terminal 

효율성이 좋음 ( 내가 단축키를 쓰는 것과 비슷한 원리)


CTRL + L -> CLEAR 

º Shell

사람으로부터 명령어를 전달 받고, 그 명령어를 전달하는 역할임 

많은 종류의 Shell이 있음

ps -ef -> 실행중인 프로세스 목록을 보여줌 

PID: process id -> 프로세스를 관리할 때 숫자 번호를 부여해둠 -> 관리 쉽고, 찾기도 편하기 때문


ppid: 부모 pid -> 이 프로세스를 누가 실행시켰는가? 

º 명령어 구조 

명령어

전달인자 

옵션

으로 나누어져 있음 


무엇은 명령 내릴 것인가? -> 전달인자 

~을 하시오 -> 명령어 

옵션 -> 해도 되고 안 해도 되고 


EX) ping 8.8.8.8 -c 3

명령어 전달인자 옵션


-------------------------------------------------------------- Directory  --------------------------------------------------------------

º 최상위 디렉토리 

pwd 

(Print Working Directory) : 작업중인 디렉토리를 출력

/root 

/: 리눅스의 모든 파일이 있는 곳 -> 최상위 경로 

º 디렉토리 

ls : list의 준말   ls -al 숨겨진 파일을 모두 보여줌.  앞에 마침표가 붙은 파일 ex) .ash_history -> 숨겨진 파일이라는 소리임.


/도 디렉토리

/ : 모든 디렉토리의 츨발점인 동시에 다른 시스템과의 연결점이 되는 디렉

     토리. 


.face 같이 앞에 .이 붙으면 숨김 파일 

뒤에 따라오는 옵션 없이 ls명령어만 입력하면 디렉토리랑 파일명만 나옴.ㅁ

ls 만 쳤을 때 이미지

º 파일 시스템

24-01-28 재작성

리눅스의 파일 시스템  출처: 유튜브 뉴렉쳐 

리눅스의 파일 시스템  출처: 유튜브 뉴렉쳐 

/:

파일 시스템이 있는 최상위 디렉터리

모든 디렉토리의 출발점인 동시에 다른 시스템과의 연결점이 되는 디렉터리를 의미


/bin:

    • 실행 가능한 바이너리 파일들이 저장되어 있으며, 시스템 부팅과 사용자 명령 수행에 필요한 기본 명령어들이 포함되어 있습니다 (예: ls, cp)


/boot:

    • 시스템 부팅에 필요한 파일들을 포함하고 있습니다. 

여기에는 커널 이미지, 부팅 로더 등이 있습니다.


/dev:

    • 장치 파일들이 위치하는 곳입니다. 리눅스에서는 하드웨어 장치를 파일처럼 다루며, 

연결되어 있는 장치 정보 확인 가능

이곳에는 HDD, USB 등의 장치 파일이 있습니다.


/etc:

    • 시스템의 전반적인 설정 파일들이 저장되어 있습니다. 여기에는 사용자 계정 정보 및 암호 정보, 보안 파일, 부팅 스크립트, 서비스 설정 등이 포함됩니다.


/home:

    • 일반 사용자의 개인 데이터와 설정 파일들이 저장되는 디렉토리입니다. 각 사용자별로 하위 디렉토리가 있습니다.


/media:

    • 이동식 미디어 장치들(예: CD-ROM, USB 드라이브)가 자동으로 마운트되는 디렉토리입니다.


/mnt:

    • 일시적으로 파일 시스템을 마운트할 때 사용하는 디렉토리입니다. /media와 유사한 기능을 하지만, 주로 수동 마운트에 사용됩니다.

/root:


    • 시스템 관리자인 'root' 사용자의 홈 디렉토리입니다.


/sbin:

    • 시스템 관리 및 시스템이 부팅될 때 필요한 실행 파일들이 저장되어 있습니다. /bin과 비슷하지만, 주로 시스템 관리자가 사용하는 명령어들이 위치합니다.


/sys:

    • 시스템 파일들의 가상 파일 시스템이며, 커널과 하드웨어 상태의 정보를 제공합니다.


/tmp:

    • 임시 파일을 저장하는 곳입니다. 프로그램이 실행되는 동안 임시적으로 필요한 파일들이 이곳에 생성되고, 재부팅 시 내용이 삭제될 수 있습니다.


/usr:

    • 사용자 프로그램과 데이터를 저장하는 디렉토리입니다. /bin이나 /sbin에 있는 것과 유사한 추가적인 사용자 명령어와 라이브러리가 있습니다.


/var:

    • 변하는 데이터를 다루는 파일들이 저장되는 곳입니다. 로그 파일, 메일 큐, 프린트 스풀 등이 이곳에 위치합니다.

이러한 디렉토리들은 각각 특정한 목적과 규칙을 가지고 있어서, 시스템의 효율적인 관리와 사용자의 편리한 사용을 돕습니다.


ls -l : 디렉토리의 내용을 자세히 출력함.

ls -a : all이라는 뜻으로 모두 출력

ls -al:

 ls - all, longformat  각 파일과 디렉토리에 대한 자세한 정보(권한, 소유자, 그룹, 크기, 최종 수정 날짜 등)를 함께 표시하도록 ls 명령에 지시합니다.

따라서 ls -al는 현재 디렉토리에 있는 모든 파일과 폴더(숨겨진 것들 포함)를 자세한 정보와 함께 보여주라는 의미입니다.


ls만 쳤을 때는 디렉토리만 나오는데, 

ls -l은 정보까지 나옴 

20년 07-06에 수정 


그러면 ls /는 뭘까?

-> 최상위 경로에 있는 디렉토리와 파일들을 보여줌 


전달 인자가 없을 경우에는? 

현재 경로에 있는 내용들을 출력

ls - l을 쳤을 때

º 디렉토리 변경

CD란? 

change directory 의 약자가 CD 바로 뒤에는 전달인자가 붙는다.

CD 명령어를 이용하면 내가 가고 싶은 디렉토리로 이동할 수 있음. 


아래 사진을 보면 ~ 에서 / 로 이동한 것을 pwd로 현재 경로를 파악할 수 있음

여기서 ls를 사용해서 최상위 경로에 무엇이 있는지 볼 수 있음


다양한 cd 활용법

cd: Change directory 의 줄임말.

cd: 이동하려는 디렉토리로 이동. 


cd .. : 상위 디렉토리로 이동  예) /user/bravo  -> /user로 이동.

cd ~: 홈 디렉토리로 이동. 

cd. : 현재 위치한 폴더로 이동. (새로고침) 

cd - : 이전에 위치했던 폴더로 이동. ( 뒤로가기 키와 비슷함.)

cd / : ROOT directory 로 이동.

cd ~: 홈으로 이동.

홈 디렉토리

디렉토리의 집과 같은 개념 

터미널 shell을 실행했을 때 최초로 존재하는 곳이 홈

/root 

아래에서 [~] 부분을 볼 수 있는데 이것이 홈을 의미함 


cd ~ , cd /root


[~]

º mkdir

Make directory의 약자 

디렉토리를 만들 수 있다. 

º mkdir, cd 응용 

yahoo라는 디렉토리를 만듬, 만든 디렉토리로 이동

º 파일 시스템 

리눅스의 파일 시스템은 어떻게 저장되고 있을까?


/bin -> Binary 파일들 리눅스에,  사용하는 

윈도우로 치면 exe 파일을 의미 


ls, pwd처럼 명령어들이 /bin 디렉토리에 위치해 있음 

/dev -> Device 리눅스에서 연결되는 하드웨어 장치 파일 


/etc -> 기타 리눅스의 설정 파일들을 저장 


/home -> 각 계정의 홈 디렉토리들이 존재하는 디렉토리 


/lib -> Library 공유 라이브러리 파일들이 존재하는 디렉토리 


/root 


/sbin -> system binary, 시스템 관리를 위한 명령어들 


/tmp -> temp 임시 디렉토리 -> 누구나 이 디렉토리를 쓸 수 있음, 껏다 키면 여기 있는 파일들이 사라짐 


/bar -> 리눅스에서 사용하는 프로그램들이 사용하는 파일들을 보관함 

º 절대 경로와 상대 경로

절대 경로: 최상위 디렉토리부터 쭉! 표시 

ex) /root 


상대 경로: 현재 내가 위치한 곳부터 표시 

ex) ./Desktop



.     :     지금 내가 위치한 곳 

..       :     지금 내가 있는 곳에서 한단계 위의 경로 


ls /root 나 ls/root/Desktop/..이 같다는 얘기 

ls/root/Desktop/.. -> ls/root

..이 Desktop보다 한단계 위의 경로를 뜻함 

º Tab 

글자의 일부분만 쓰고 자동으로 완성하게 하는 기능


-------------------------------------------------------------- Directory  ------------------------------------------------------

-------------------------------------------------------------- File --------------------------------------------------------------

º VI

vi는 unix와 linux에서 많이 사용되는 텍스트 편집기입니다.

새 파일을 만들거나 기존 파일을 편집할 수 있습니다.

 

터미널에서 vi filename.txt와 같이 입력합니다. 여기서 filename.txt는 원하는 파일 이름입니다.

이 명령어를 실행하면, filename.txt라는 이름의 새로운 파일이 열리며, 편집 모드가 아닌 명령 모드로 시작합니다.


만약 해당 이름의 파일이 이미 존재한다면, 그 파일을 열어 편집할 수 있습니다. 


1) 입력모드 2) 명령모드 

i 누르면 입력모드 

i 안 누르면 명령모드


리눅스에서 vi 치면 메모장 실행

vi, vim 생각보다 많이 씀 

입력모드

i  누르고 쓰고 esc ->

:w 띄고 file_1(이름) 치면 파일명이 저장된거임

:q 따로 따로 해도 되고

 :wq! 도 가능

명령모드


찾고 싶은 단어 찾기

/단어

찾을 단어가 여러개면 n을 눌러서 다음으로 이동 가능

shift를 누르면 뒤로 


이동

줄을 지정해서 가고 싶으면, :3 -> 3번 줄로 이동

삭제

줄 삭제: 지우고 싶은 줄로 가서

dd 누르면 줄 자체가 삭제됨

or  

명령모드에서 지우고 싶은 줄 수를 입력하면

만약에 3이라고 쳤다면 밑에서 3줄 삭제된다. 

mkdir dir + (디렉토리 이름)             ex) mkdir  wd

일반적으로 디렉토리 만들 때 mkdir wd 

  -> cd wd

-> mkdir md

-> mkdir td

이런 식으로 만들잖아 근데 

mkdir -p wd/{md,tw} 이런 식으로 상위 디렉토리 하위 디렉토리 만들 수 있음.  

º CAT 

Concatenate의 약자로 여러 파일을 결합하거나 생성하거나 텍스트를 읽을 때 사용됩니다.


파일 내용 출력: cat filename.txt와 같이 사용하면 해당 텍스트 파일 (filename.txt)의 내용이 터미널에 출력됩니다.

여러 파일 결합: cat file1.txt file2.txt > combinedfile.txt와 같이 사용하면 file1.txt와 file2.txt의 내용이 합쳐져서 combinedfile.txt라는 새로운 파일에 저장됩니다.

새로운 파일 생성: 터미널에서 직접 입력하여 새로운 텍스트 파일을 만들 수 있습니다. 예를 들어, cat > newfile.txt를 입력한 후 원하는 내용을 작성하고 Ctrl+D를 누르면 그 내용이 newfile.txt라는 이름의 새로운 파일에 저장됩니다.


º CP

Copy를 cp로 줄여서 사용 

copy 두가지 필요 

[src] Source, [dst] Destination 


cp test ./Desktop/copy 

cp 복사해라 test라는 파일을 데스크탑 디렉토리에 

이름은 copy로 

º rm

rm: remove 의 준말.     rm  + 파일명을 입력하면 삭제할 수 있음.

rm - r ->  디렉토리 삭제  rm -r 디렉토리명을 입력하면 삭제할 수 있음 

rm -f -> 강제 삭제 (force)


rm -rf -> 디렉토리 강제 삭제 

rm -rf / -> 멸망 버튼

hello.c 파일이 있는 것을 확인할 수 있습니다. 

한번 hello.c 파일을 삭제해 보겠습니다.

rm 명령어를 입력하기 전 모습

rm hello.c 명령어를 입력하니, hello.c 파일이 사라진 것을 확인할 수 있습니다.

hello.c 파일이 삭제된 모습

º clear

clear : 치우다.

깔끔하게 정리해 줌. claer 

º Move 

파일을 이동하는 명령어는 mv입니다. 

cp 원본 파일 남기고 복제

mv: 원본 파일 지우고 이동


mv + 파일명 + 이동할 곳

mv + 디렉토리 + 파일명 + 이동할 곳 


이렇게 해도 다른 디렉토리로 파일을 이동시킬 수 있습니다. 

왼쪽으로 한 칸 이동: 생성된 날짜, 수정된 시간 등

다시 왼쪽으로 한칸 이동: 114, 76~ 은 디렉토리와 파일의 사이즈를 바이트 크기로 나타낸 것 

앞에 d, -, l이 각각 무슨 의미를 내포하는지 살펴보자. 먼저 d -> directory, - file, l -> link 를 의미한다. 아래 이미지에서는 l이 없지만 알아두면 좋을 것 같음. 

-------------------------------------------------------------- File --------------------------------------------------------------

º GRUB  

GRUB은 GNU 프로젝트의 부트로더임. 

( Grand Unified Bootloader )

운영체제의 커널을 불러올 수 있고, 인자를 넘겨줄 수도 있음

º Chmod 

'chmod'는 리눅스와 같은 유닉스 기반 시스템에서 파일의 권한을 변경하는 데 사용되는 명령어입니다. 'chmod'는 'change mode'의 약자로, 사용자가 파일이나 디렉토리에 대한 읽기, 쓰기, 실행 권한을 설정할 수 있게 해줍니다. 

리눅스 chmod 명령어 사용법. (Linux chmod command) - 리눅스 파일 권한 변경.1. 리눅스 파일 사용 권한 리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있습니다. 파일에 저장된 데이터를 읽기. (r = read). 파일에 데이터를 쓰기. (w = write). 파일 실행. (x = execute) 그런데 만약 리눅스 시스템의 모든 파일이, 그 종류 또는 쓰임새와 관계없이 읽기, 쓰기, 실행 가능하게 만들어져 있다면 어떻게 될까요? 잘못된 명령어 사용으로 시스템 운영에 중요한 역할을 하는 파일의 내용이 변경되거나, 사용자의 사소한 실수 한번으로 리눅스 시스템의 모든 파일이 삭제되어 버릴 수도 있습니다. 이런 문제가 생기는 경우를 방지하기 위해, 리눅스에서는 각 파일 및 디렉토리에 대해 "읽기(r)", "쓰기(w)", "실행(x)" 권한(permi..

개발자를 위한 블로그 https://recipes4dev.tistory.com/175

º UID, GID 

23-12-16 확인 A, B

User id(숫자로 표현)  , Group id (숫자로 표현)


root: 최고 관리자 권한 

uid=0: 최초의 계정이라는 의미



su: switch user

#: root shell

$: 기본 shell (일반 사용자 계정)

루트 uid, gid 결과

그룹이 cosmo로 배당된 것을 볼 수 있음 

일반 사용자 계정의 uid, gid

º 비밀번호 

vi /etc/passwd

57 개의 계정이 있습니다. 

데이터:구분:콜론:으로:합니다/

root 의 uid:0  gid:0

root:x:0:0:root:/root/:root:/usr/bin/zsh

1: 계정 이름(id) root

2.비밀번호 x -> 비공개 /etc/shadow에 진짜 비밀번호

3.uid 0

4. gid  0

5. 사용자 별명  root(id 그대로 적는 경우 많음)

6. 홈 디렉토리 /root

7.로그인 쉘  /usr/bin/nologin -> 로그인 해서 쓰지 마라.. 리눅스가 사용하는 프로그램

º rwx

Permission 파일을 만든 모습 

-rw  r--  r--으로 분류할 수 있음 

1 옆에 root가 있으니, rw는 root 계정임 

Permission의 권한을 확인하는 과정

read: 읽을 권한 

-> 파일: 그 파일을 읽을 수 있는지? 

-> 디렉토리: 그 디렉토리 안에 어떤 파일이 있는지


write 쓰기 권한 : 파일 -> 그 파일의 내용을 수정할 수 있는지

디렉토리 -> 그 디렉토리 안에 파일, 디렉토리를 생성할 수 있는지 


excute 실행 권한: 파일 -> 그 파일에 접근할 수 있는지 

디렉토리 -> 디렉토리에 접근 

r--가 사실은 rwx임 

r--은 읽을 권한만 있는거 


ex) rw- r-- r-- 

(1) 소유자

(2) 그룹 권한

(3) 기타 사용자 권한 

kali는 일반 계정이기 때문에 permission을 읽을 수만 있습니다. 

그렇지만 읽고 실행할 수 있을까요?

permission 파일을 읽은 모습

vi permission으로 들어가서 강제로 파일을 수정하려고 하면, 

권한이 없기 떄문에 바꿀 수 없습니다.

º 특수 권한 

set user ID upon execution 

setuid

예를 들어, 파일이 setuid 권한을 가지고 있고, 그 파일의 소유자가 root라면, 

그 파일을 실행하는 모든 사용자는 해당 파일을 실행하는 동안 root 권한을 가집니다. 이는 시스템에서 특정 작업을 수행할 수 있도록 하기 위한 방법이지만, 잘못 사용하면 보안 위협이 될 수 있습니다. 


root 권한을 빌려서 인증을 받아야 할 때 사용 


setgid 

파일을 실행할 때 파일 그룹의 권한으로 실행 

-rwsr-sr-x -> 그룹의 소유자 권한 O

-rwsr-Sr-x -> 그룹의 소유자 권한 X


sticky bit

디렉토리에 설정

누구나 파일을 만들 수 있음

다른 사람 삭제 X 본인만 삭제 O

ex) /tmp


rwt -> 실행 권한 o

rwT -> 실행 권한 x


정리: setuid, setgid s(권한 있음) / S(권한 없음) 으로 분류

sticky bit는 t( 권한 있음) / T(권한 없음) 으로 분류

리눅스의 부팅 과정 이미지 

출처: [따라學IT] 03. 리눅스 부팅 과정 - 이론, 따라하면서 배우는 IT

º easd

데이터 스트림: 데이터의 흐름 

입력 스트림 

사람 <----> 운영체제 <----> 컴퓨터 

     출력스트림 


표준 입력: 0 

표준 출력: 1

표준 에러: 2 

º Redirection

데이터의 방향을 바꾸는 것 


Redirection이라는 디렉토리를 만든 모습


pwd_result로 파일을 만들어 준 다음 

출력이 아닌 저 파일로 저장되게끔 흐름을 바꿈  


컴퓨터 화면 > pwd_result

(Redirection)

입력 값이  잘 저장되어 있는 것을 확인할 수 있습니다.

id 밑에 더 추가를 하고 싶다면, pwd >>를 사용하면 됩니다. 

데이터 스트림: 데이터의 흐름 

입력 스트림 

사람 <----> 운영체제 <----> 컴퓨터 

     출력스트림 


표준 입력: 0 

표준 출력: 1

표준 에러: 2 

Ridirection은 0 1 2 도 조절할 수 있는데 

먼저 권한이 없는 계정으로 접속해 rockyou를 찾아보자

그러자 denied 된 것을 확인 할 수 있다.

명령어의 결과를 화면이 아닌 파일로 출력하고 싶을 때 사용 

º PIPE

23-12-15 작성

파이프, 빨대를 의미

한 공간에서 다른 공간으로 물질을 이동시키는 역할 

어떤 프로세스의 출력을 다른 프로세스의 입력으로 넣어주고 싶을 때 사용


먼저 grep_test라는 파일을 만들어 주고 

alpha, beta, gamma, delta를 작성해주고 저장했습니다.

그런 후에 grep으로 gamaa란 단어를 찾은 모습입니다. 

EX) /bin 안에 있는 파일 중에서 "find"란 단어가 포함되어 있는 글자가 포함되어 있는 파일들이 뭔지

확인할 때 

ls/ bin | grep "find"

º 기타 명령어

25-06-03 작성

sudo 명령어 /etc/shadow를 열어보는 법:

sudo cat /etc/shadow


/etc/login.defs 파일 수정하는 법:

(1) sudo vim /etc/login.defs


(2) PASS_MAX_DAYS 를 찾아 이동합니다.

(3) /PASS_MAX_DAYS를 입력하면 쉽게 찾을 수 있습니다.

(4) PASS_MAX_DAYS 값을 90으로 변경하고 ESC -> :wq!로 저장합니다.


grep 을 사용해서 찾을 수도 있음 

grep PASS_MAX_DAYS /etc/login.defs

grep pam_wheel.so /etc/pam.d/su


or 

cat /etc/pam.d/su | grep "pam_wheel.so"


-------------------------------------------------------------- Bandit ------------------------------------------------------------

º Bandit

24-01-03 작성 A

level 1->2 

문제: The password for the next level is stored in a file called - located in the home directory 


1. ls로 -파일이 있나 확인했습니다. 

2.cat - 하면 인식이 안돼서

3.cat /home/bandit1/-로 풀네임을 적어줬습니다. 

4.cat ./- 현재 경로에 있는 -을 출력

level 2->3

문제: The password for the next level is stored in a file called spaces in this filename located in the home directory 


글자라는 것을 인식하기 위해서 " "를 써주었습니다.

Bandit level 2 image

level 3->4

문제: The password for the next level is stored in a hidden file in the inhere directory.

ls로 inhere라는 디렉토리를 찾아

일련의 과정을 거쳐 cd로 이동하였습니다. 

이동한 후에 ls로 찾아보았는데 찾을 수 없어

find를 사용하여 숨겨진 파일을 찾았습니다.


 ++ ls -al을 사용하면 되었네요.. 

Bandit level 3 image

level 4->5

문제: The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command. 


ls로 살펴보고

cd inhere로 이동한 후에 ls -al로 살펴보았습니다.

거기서 -file00, -file01 ... 등을 발견하여 

cat으로 읽어보았는데 읽을 수 없었습니다.

그래서

level1과 전에 정리해둔 방법 ./ (현재 경로)를 사용하여

cat ./-file00으로 파일을 읽었습니다. 

그런 후에

cat ./*을 사용하여 07부분에 아스키 코드가 있는 것을 발견하여

cat ./-file07으로 다음으로 넘어가는 비밀번호를 발견하게 되었습니다.

Bandit level 4 image (1)

Bandit level 4 image (2)

level 5->6

24-01-11 작성 A



문제: The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties:

(1) human-readable

(2) 1033 bytes in size

(3) not executable


inhere란 디렉토리로 가서 확인을 해보니 maybehere00~이라는 디렉토리를 확인하였습니다.

양이 너무 방대해 find로 찾아봅시다.

find +_ 경로 +_옵션 +_not executable

find ./ -type f -size 1033c !-executable

Bandit level 5 image (1)

!-executable (x)  ->  ! -executable (o)

Bandit level 5 image (2)

level 6->7

24-01-13 작성 A

문제: The password for the next level is stored somewhere on the server and has all of the following properties: 


owned by user bandit7

owned by group bandit6

33 bytes in size


find / -user bandit7 -group bandit6 -size 33c

find / : 루트 디렉토리 부터 모든 파일과 디렉토리를 찾아라!

c : 33 byte를 의미합니다.


그랬더니 거부되었습니다. 


find / -user bandit7 -bandit6 -size 33c 2> /dev/null


여기서 2> /dev/null : 이 부분은 에러 메시지를 무시하라는 의미입니다. 

2는 표준 에러를 나타내며, '/dev/null'은 리눅스에서 null 장치 파일로, 이곳으로 보내진 데이터는 모두 삭제됩니다. 즉, 이 명령어를 실행하면서 발생하는 모든 에러 메시지를 무시하겠다는 의미입니다.




위의 과정을 통해 

cat /var/lib/dpkg/info/bandit7.password로 level7으로

가는 키를 찾았습니다. 

level 7->8

24-01-17 작성

문제: The password for the next level is stored in the file data.txt next to the word millionth 


ls 에서 data.txt가 나왔습니다.

cat data.txt 로 읽어봤는데 화면이 순식간에 바뀌었습니다.

txt 파일은 vi로 읽을 수 있으니 

vi data.txt /millionth 로 비밀번호 획득 하였습니다.

level 8->9

24-01-19 작성

문제: he wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games.
To find out more about a certain wargame, just visit its page linked from the menu on the left.

If you have a problem, a question or a suggestion, you can join us via chat.

Suggested order to play the games in

Bandit

Leviathan or Natas or Krypton

Narnia

Behemoth

Utumno

Maze

…

Each shell game has its own SSH port

Information about how to connect to each game using SSH, is provided in the top left corner of the page. Keep in mind that every game uses a different SSH port.


data.txt가 너무 중구난방이라 sort로 정렬해주었습니다.

기존의 data.txt

sort로 정렬한 모습

uniq -u 

유니크한 것만 (한 번만 나오는 것만) 출력해라 

level 9->10

24-01-22 작성

The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters.

Commands you may need to solve this level

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd


cat data.txt의 결과물이 이렇게 나왔습니다. 

그런 후에

문자열만 추출할 수 있는 명령어인 strings를 사용하였습니다. 

data.txt를 읽은 모습 이미지

pipe와 redirection을 사용하여 =이라는 글자를 찾아주었습니다.

strings data.txt | grep =

최종 실행 결과 이미지

level 10 -> 11

24-01-27 작성

문제: The password for the next level is stored in the file data.txt, which contains base64 encoded data

Commands you may need to solve this level

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Helpful Reading Material

  • Base64 on Wikipedia


뒤에 ==가 붙으면 보통 인코딩인 경우가 많음 

리눅스에는 기본 프로그램으로 있음

base64 --decode data.txt로 디코딩 하게 된다. 


level 11 -> 12

24-02-05 작성

문제:

The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions

Commands you may need to solve this level

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd

Helpful Reading Material

Rot13 on Wikipedia


카이사르 암호와 같은 문제네요. 

보내고자 하는 메시지를 n 번씩 밀어서 암호화하는 방법으로 알려져 있죠.


Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEi


을 복호화 사이트에 돌려줍니다.




다음과 같은 결과를 얻을 수 있습니다.

이미지 출처: https://jo-gunhee.github.io/website1/dcode/dcodewebsite.html

level 12 -> 13

24-02-07 작성

문제: The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!)

Commands you may need to solve this level

grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv, file

Helpful Reading Material

Hex dump on Wikipedia


Hax dump란?

컴퓨터 데이터를 16진수로 바꾼 것을 의미합니다.

1010101010101110~

-> f1 2f 2d 


복잡한 파일을 tmp에 옮겨서 작업 합시다.


*man 을 적고 궁금한 명령어를 적으면 설명해 줍니다.

ex) man xxd


mkdir /tmp/des 를 만들었습니다.

그런 후에 data.txt를 /tmp/des에 복사했습니다.

data.txt를 옮기는 과정 이미지

xxd -> hexdum를 리버스로 복구해 줍니다.  

revere -> -r

xxd -r data.txt 

cat data.txt 이미지

xxd로 Hax dump된 파일을 복구시켜서 bandit이라는 파일명으로 만든 것을 의미합니다.

xxd -r data.txt > banidt


xxd: Hax dump로 만들어줌 -r: Reverse 

xxd를 사용한 모습 이미지

file bandit으로 확인해보니 gzip으로 압축이 되어 있다는 것을 확인 할 수 있습니다.

gzip은 guzip으로 바꾸어서 풀 수 있기 때문에 

bandit -> mv bandit bnadit.gz으로 변경하였습니다.


gunzip으로 풀었더니 bzip2로 바뀐 것을 볼 수 있습니다. 

bzip 파일을 다시 gzip파일로 압축을 하여서 다시 하나하나 풀어주는 과정을 거쳤습니다.

그런 후에 POSIX tar 라는 압축 파일이 나타났습니다. 

mv bandit.tar로 tar 파일로 바꿔주었고, tar -xf bandit.tar

로 파일을 풀어주었습니다. 


-xf: 복구 

계속해서 압축을 풀다가 data8에서 아스키 코드가 나와 cat으로 읽어주었더니, 답이 나왔습니다.

level 13 -> 14

24-02-22 작성

The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14. For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note: localhost is a hostname that refers to the machine you are working on

Commands you may need to solve this level

ssh, telnet, nc, openssl, s_client, nmap

Helpful Reading Material

  • SSH/OpenSSH/Keys


ssh에 공개키를 올려두어서 개인이 비밀키로 푸는 문제입니다. 

먼저 cat으로 sshkey를 읽어주었습니다. 


그런 후에 ssh -i sshkey.private bandit14@localhost -p 2220으로 입력해서 bandit 14로 접속했습니다.


-i (개인키 접속), localhost 


level 14 -> 15

24-02-23 작성

Level Goal

The password for the next level can be retrieved by submitting the password of the current level to port 30000 on localhost.

Commands you may need to solve this level

ssh, telnet, nc, openssl, s_client, nmap

Helpful Reading Material

  • How the Internet works in 5 minutes (YouTube) (Not completely accurate, but good enough for beginners)

  • IP Addresses

  • IP Address on Wikipedia

  • Localhost on Wikipedia

  • Ports

  • Port (computer networking) on Wikipedia


nc를 사용하면 됩니다.

nc란? 리눅스에서 네트워크와 관련된 다양한 작업을 수행하는 명령어 입니다.

TCP / UDP를 모두 지원하고, 네트워크 연결을 열고, 읽고, 쓰고, 리다이렉트하는 등의 작업을 수행할 수 있습니다. 


포트스캐닝, 파일 전송, 채팅 서버 설정 등에 사용 

nc [system address] [port]


nc localhost 30000로 들어가서

비밀번호로 입력 한 후 다음 레벨로 가는 비밀번호를 얻었습니다.


level 15 -> 16

24-02-29 작성

The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL encryption.

Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command…

Commands you may need to solve this level

ssh, telnet, nc, openssl, s_client, nmap

Helpful Reading Material

  • Secure Socket Layer/Transport Layer Security on Wikipedia

  • OpenSSL Cookbook - Testing with OpenSSL

nc -> tcp로 

openssl -> ssl/tls 로 


openssl s_client -connect localhost:30001

s_client (어디든지 연결 하겠다), -connect (옵션), 30001번 포트로 접속해라 

여기서 이제 tls로 암호화 통신을 하는 것을 알 수 있습니다.

bandit14에서 얻은 비밀번호를 입력을 하면  새로운 비밀번호가 나옵니다. 

echo $TMOUT: 환경변수 값 직접적으로 확인할 수 있음

copyright © Cosmopolitan72 All Rights Reserved. 
Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse