해킹 동아리 I.Sly()/방학 스터디 활동 36

[bandit] level 32 -> level 33

로그인 하자마자 UPPERCASE SHELL이 뜬다. ls를 입력하였더니 대문자로 변환된다. (LS) 쉘 자체가 원래 대문자로 변환되는 시스템이 아닌, 입력한 문자값을 대문자로 변환하는 프로그램이 실행 중인 것 같다. 이를 해결하기 위해선 문자로 구분되지 않는 숫자나 특수문자 등을 사용해야한다. 리눅스에서는 쉘 명을 비롯한 쉘에 대한 정보를 $0 ~ $9로 표현할 수 있다. $$ : 쉘의 프로세스 번호 $0 : 쉘스크립트 이름 $1 ~ $9 : 명령줄 인수 $* : 모든 명령줄 인수리스트 $# : 인수의 개수 쉘이 저장된 위치는 /bin 디렉토리로 명령어들을 모아놓은 디렉토리이다. 따라서 /bin 디렉토리에 있는 프로그램은 해당 파일명만 입력하면 실행이 된다. ls, pwd, cat 등등이 모두 /bin..

[bandit] level 31 -> level 32

내용은 전단계와 같다. ssh://bandit31-git@localhost/home/bandit31-git/repo 를 복사하자. 파일을 읽어보자. 해석) 이번 너의 임무는 파일을 원격 저장소에 push하는 것이다. 파일 이름: key.txt 내용: 'May I come in?' 브랜치: master add, push, commit 세 단계를 거쳐 파일을 추가할 수 있다. git add [파일명] : 해당 파일을 staging area 라는 곳에 추가해준다. git commit -m "Message" : staging area에 추가된 파일을 local repository(로컬 저장소)에 저장한다. git push [저장소명] [브랜치명] : 로컬 저장소를 원격 저장소에 업로드 함으로써 최종적으로 원격 ..

[bandit] level 30 -> level 31

내용은 저번과 동일하다. git 복사를 해준 뒤, repo로 이동. (중간에 ls는 흐린눈 부탁) README.md를 읽는다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 장난하나~! 수정이력을 확인해보자. 처음부터 저렇게 설정해놓은 듯하다. 브랜치도 확인해보자. 다른 브랜치는 존재하지 않는다고 나온다. 이렇게 ls -al로 확인해 보니, .git 디렉토리가 있다. .git 디렉토리 git clone을 이용해 다운 받은 디렉토리 내에는 .git이라는 디렉토리가 존재한다. 이를 git 저장소라 하고, .git 디렉토리 아래에는 해당 git을 관리하기 위한 파일 및 디렉토리가 존재한다. .git의 기본 구성은 다음과 같다. /hooks/ : 훅 스크립트 파일이 저장되는 곳. 특정 Git 관련 명령어..

[bandit] level 29 -> level 30

해설) ssh://bandit29-git@localhost/home/bandit29-git/repo 에 깃 저장소가 있다. 내용은 저번과 같다. 다음 레벨로 가기 위한 패스워드를 찾아라. 저번과 같이, bandit29 디렉토리를 만들고 git을 복사한다. repo로 이동해, README.md를 읽어준다. 패스워드가 없다고 나온다. 수정이력을 보자. 패스워드는 수정된 이력이 없다고 나온다. 다른 작업 공간이 있는지 branch를 통해 알아보자. branch란? A라는 사람이 Git에 저장된 파일을 수정하는 동안, B라는 사람도 Git에 저장된 파일을 수정하는 경우가 생긴다. 이 때, 이들이 서로의 작업에 영향을 미치지 않도록 하기 위해 각각의 작업 영역을 만들어주는 기능이 바로 브랜치(Branch)이다. ..

[bandit] level 28 -> level 29

전단계와 동일하다. 이상한 일이다. 왜 이미 존재하지? 저번부터 알 수 없는 일이 ... 와우. 또 이미 존재한다고 뜬다. 저번처럼 이미 깃주소가 복사된 것 같은데, 이유를 모르겠다. 저저번 단계 커맨드라인에서 내가 벗어나려고 막 이상한 문자들 치고 그랬는데 거기서 설정이 뭐 잘못된건가? README.md 파일을 읽어본다. 와... 진짜 이상한 일이 생겼다. 다른 풀이 보면 저 패스워드부분이 xxxxxx로 뜬다는데, 나는 바로 저렇게 뜬다^^ 개꿀이긴 한데 진짜 무슨일이지. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ bbc96594b4e001778eee9975372716b2 혹시나 해서..

[bandit] level 27 -> level 28

해설) ssh://bandit27-git@localhost/home/bandit27-git/repo 에 git저장소가 존재한다. bandit27-git의 패스워드는 bandit27의 패스워드와 동일하다. Git Git이란 소스코드를 저장하는 저장소를 뜻한다. 저장소에 저장된 소스 파일에 수정이 이루어졌을 때, 누가 언제 어떤 파일을 수정했는지 기록되고 추적할 수 있도록 관리해주는 것을 소스코드 저장소라고 하는데 이를 보통 리포지토리(Repository)라고 부른다. Git은 이러한 소스코드 저장소를 구현한 프로그램 중 하나이다. Git 저장소에 등록된 소스 파일을 받아오기 위해선 아래의 명령어를 사용하면 된다. git clone [소스파일 주소] 깃 저장소에 저장된 소스파일을 현재의 디렉토리에 복사한다...

[bandit] level 26 -> level 27

해설) 잘했다! 이제 빨리 bandit27의 패스워드를 잡아라. ls -al로 무슨 파일이 있는 지를 확인한다. bandit27의 setUID가 설정된 bandit27-do파일이 보인다. 실행시켜보자. 저번과 같은 멘트가 뜬다. 뒤에다가 인자를 덧붙여보자. 패스워드가 나온다. 그런데! exit을 눌렀더니 커맨드라인이 또 나오는데 여기서 벗어나질 못하겠다. 그래서 그냥 창 닫아버리고 다시 시작..

[bandit] level 25 -> level 26

해설) bandit25에서 bandit26으로 로그인하는 것은 상대적으로 쉽다... bansit26을 위한 쉘은 /bin/bash가 아니고, 다른 것이다. 이것이 뭔 지, 어떻게 작동하고 어떤 식으로 나갈 수 있을 지를 알아내라. 우선 ls를 입력하니 bandit26.sshkey가 존재하는 것을 확인할 수 있다. 해당 키를 이용해 ssh로 26단계로 로그인해보자. 그런데, 로그인하자마자 연결이 끊긴다. 기분 나쁘다... 문제해설 보면 이 레벨은 /bin/bash를 사용하지 않는다고 나와있기 때문에, 계정에 로그인하면 어떤 프로그램이 실행되는지 확인해준다. 로그인할 때 실행되는 프로그램의 정보는 /etc/passwd 파일에 있다. grep bandit26을 이용해 bandit26계정에 대해서만 출력해준다...

[bandit] level 24 -> level 25

해설) 포트 30002에서 데몬이 실행 중이고, 여기에다가 bandit24의 패스워드와 4자리 정수를 보내면 이것은 너에게 bandit25의 패스워드를 줄 것이다. 핀 코드를 검색하는 방법은 없고, brute-forcing을 통해 10000가지 경우의 수를 직접 해봐야 한다. 브루트 포스란? 브루트 포스란 문제를 해결하기 위해 가능한 모든 경우를 직접 실행시키는 방법을 말한다. 예를 들어, 1부터 100까지의 합을 구하는 데에 있어서, 등차수열의 합 공식을 이용해 구할 수도 있지만, 단순히 1부터 100까지 전부 다 더해서 구하는 방법도 존재한다. 이러한 풀이를 브루트 포스라고 한다. 시작하기에 앞서...갑자기 '시스템 리소스가 부족웅앵...' 하며 리눅스가 안 열리고 막 혼자 초기화되고 그래서 당황했다..

[bandit] level 23 -> level 24

해설) 프로그램은 cron으로 작동된다. /etc/cron.d/로 이동해 실행되는 명령을 보아라. NOTE: 이 레벨은 너에게 첫 쉘 스크립트를 창작하는 것을 요구한다. 이것은 매우 큰 일이며 너 자신을 자랑스러워해라! NOTE2: 너의 쉘 스크립트는 한 번 실행되면 사라진다는 것을 명심하며, 복사하는 것을 명심해라. 역시나 저번과 같다. 이번 단계의 목표인 cronjob_bandit24를 읽어보자. 해당 명령어를 읽어보자. 코드들이 나온다. 해석) myname = $(whoami) => myname에 "bandit24" 저장 cd /var/spool/$myname => /var/spool/bandit24로 이동. echo "Executing and deleting all scripts in /var/s..