728x90
반응형

Bandit 32

OverTheWire [Bandit Level 32, 마지막 레벨]

Bandit Level 32입니다. 드디어 마지막 문제로군요. 정확히 해석이 안되는데.. 이 모든 문제들을 푼 후엔 다른 워게임 문제를 풀으라는.. 대충 그런 식의 말인듯 합니다 우리가 아는 bash 쉘이 아니군요. 대문자 쉘에 오신 것을 환영합니다? 일단 쉘은 sh쉘 이로군요. 모든 입력값을 대문자로 받아들이는 쉘인듯 합니다. 음,,, 뭘 입력해도 안 되더군요. 리눅스에서 대문자를 쓰는 명령어가 무엇이 있을까? 생각을 해봤는데 환경변수가 있었습니다. 그러나 환경변수 목록을 찾아보고, 이용할 만한 게 있나 여러가지 확인해 봤지만 결정적인 건 찾을 수 없었습니다. $0 하지만 $0 환경변수로 해결할 수 있었습니다. $0는 현재 쉘을 반환하는 환경변수 인데요, 그냥 사용하면 쉘이 하나 더 켜지게 됩니다. (..

OverTheWire [Bandit Level 31]

Bandit Level 31 입니다. 다시 한번 git 문제입니다. 해당 git 저장소에서 password를 찾아야 합니다. 이번에도 역시나 /tmp 경로에 디렉터리를 생성한 후, git clone명령어로 다운받아 옵시다. 다운로드해준 후, 파일을 확인해 봅시다. 이번엔 저장소에 파일을 push(업로드) 하라고 하네요. 파일명 : key.txt 내용 : May I come in? Branch : master 위와 같은 조건으로 push 해야 할 듯 합니다. 먼저 key.txt 파일을 제작해 주도록 합시다. vi를 이용하여 key.txt 파일을 제작하였습니다. 이제 이 파일을 push해주면 되겠습니다. git add -f key.txt git add -f : 파일 업로드를 위해 디렉터리상의 변경 내용을 스..

OverTheWire [Bandit Level 30]

Bandit Level 30 입니다. 이번에도 git 문제입니다. /tmp 경로에 디렉터리를 만들고 repo 를 다운받아 옵시다. git clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repo 따로 생성한 디렉터리로 이동 후 해당 명령어를 입력하여 다운받아 주시기 바랍니다. repo 디렉터리 안의 README.md 파일을 읽어보았는데요, 별다른 내용이 없습니다. commit과 branch를 확인해 봅시다. commit은 한개 뿐이고, 특별한 내용이 없습니다. branch도 현재 사용중인 master 한개 뿐입니다. remotes/origin/HEAD -> origin/master 문구는 현재 사용중인 branch를 의미합니다. commit도 없고,..

OverTheWire [Bandit Level 29]

Bandit Level 29입니다. 슬슬 끝이 보여가고 있네요. 이번에도 Git 을 이용한 문제입니다. 문제는 저번 문제와 동일합니다. 해당 git 저장소에서 password를 찾아야 합니다. 저번처럼 /tmp 경로에 디렉터리를 만들고 해당 경로에서 작업해 줍시다. git clone ssh://bandit29-git@localhost:2220/home/bandit29-git/repo 명령어로 repo 디렉터리를 다운로드 했습니다. 그리고 repo 디렉터리에 있는 README.md 파일을 읽어봤더니 위와 같은 내용이 있군요. no passwords in production! password가 없다는데요.. 일단 commit 부터 살펴봅시다. git log 2개의 commit이 있습니다. 둘 다 확인해 보도..

OverTheWire [Bandit Level 28]

Bandit Level 28입니다. 이번에도 Git을 사용하는 문제입니다. 문제는 저번 레벨과 동일합니다. git을 이용해서 저장된 password를 찾으면 됩니다. /tmp 경로에 작업공간을 생성해 주고, git clone ssh://bandit28-git@localhost:2220/home/bandit28-git/repo git clone 명령어를 이용해 다운받아 줍시다. repo디렉터리에 있는 REAME.md 파일을 읽어 봤더니, bandit29의 자격증명이 존재합니다. 하지만 password가 xxxxxxxxxx 로 읽을 수 없게 되어 있군요. git log git log : 데이터가 수정되었던 내역들을 확인할 수 있습니다. ( commit을 확인하는 겁니다 ) 3개의 commit이 있는데요, 맨..

OverTheWire [Bandit Level 27]

Bandit Level 27 입니다. 해당 git주소 저장소를 다운받아 password를 찾으라고 합니다. password는 bandit27의 password와 같습니다. 파일을 다운로드 받아야 하니, 먼저 /tmp 디렉터리에 우리가 작업할 개인 디렉터리를 생성해 줍시다. git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo git clone : git저장소의 파일을 다운로드 하는 명령어 명령어를 입력하고 bandit27-git의 password를 입력해주면 repo 디렉터리가 생성됩니다! 그리고 접근 경로에 반드시 :2220 을 붙여줘야 합니다. 이건 포트번호를 의미하는데요, 붙이지 않으면 22번 포트 접근에 대한 에러가 자꾸 뜨면서 안..

OverTheWire [Bandit Level 25]

Bandit Level 25 bandit26에 로그인하는것은 꽤 쉬울 것이다. bandit26의 쉘은 /bin/bash가 아닌 다른 것이다... 라고 합니다. 무슨 의미일까요? 일단 bandit26의 쉘부터 확인해 보도록 합시다. cat /etc/passwd | grep bandit26 /etc/passwd : 시스템에 등록된 계정정보가 저장된 중요 파일, 각 내용은 :(콜론)으로 구분된다 bandit26의 쉘은 특이하게도 /usr/bin/showtext 로군요. 어떤 파일일까? bandit26이 사용중인 showtext 쉘의 내용입니다. more : 파일을 읽어오는 명령어, 한번에 불러오는 cat과는 다르게 한줄씩 넘기며 읽을 수 있다 more ~/text.txt 명령어로 text.txt 파일을 읽어온..

OverTheWire [Bandit Level 24]

Bandit Level 24 입니다. 이번에도 쉘 스크립트 코드를 짜야 합니다. 30002번 포트에서 listen중인 데몬에게, bandit24의 password와 4자리 숫자로 구성된 비밀번호를 전달하면 bandit25의 password를 획득할 수 있다고 합니다. 단, 획득할 수 있는 방법은 10000가지의 비밀번호를 전부 대입해 보는 방법밖에는 없다고 합니다. 전부 하나하나 손으로 입력해야 할까요? 아니죠. brute-force(무작위 대입) 공격을 사용해야 합니다. 일단 포트를 확인해 보도록 하죠. nc로 30002번 포트에 접속하여, 입력값을 전달해 보았습니다. 포트는 문제가 없어 보입니다. 입력도 잘 되고요. 이제, 30002번 포트에게 0000부터 9999까지 자동으로 입력해 줄 코드를 짜보..

OverTheWire [Bandit Level 23]

Bandit Level 23 입니다. 이번에도 cron 문제네요. cron에서 프로그램이 반복 실행되고 있고.. /etc/cron.d 디렉터리를 확인하라고 합니다. 이 문제를 해결하기 위해선 쉘 스크립트를 직접 작성해야 한다고 하네요! cat /usr/bin/cronjob_bandit24.sh 파일입니다. 중간에 힌트가 있네요. /var/spool/$myname/foo 디렉터리의 모든 것을 실행한 후 삭제한다. 라는 뜻 같은데요 그 밑에 코드는.. 그걸 실행시키는 코드 같습니다. 해당 디렉터리의 모든것을 bandit24의 권한으로 실행 후 삭제한다. 그럼 어떻게 해야 할까요. bandit24가 직접 자신의 password를 우리에게 전달하도록 하면 되겠는걸요? 간단한 프로그램을 만들어 봅시다. 아! 그 ..

OverTheWire [Bandit Level 22]

Bandit Level 22 입니다. 문제 자체는 이전 레벨과 같습니다. cron을 확인하라고 합니다. 아래엔 추가로, 쉘 스크립트를 보는 것은 좋은 기술이라고 하네요. /etc/cron.d 디렉터리입니다. 우리는 bandit23의 password가 필요하니, cronjob_bandit23 을 확인해 보도록 합시다. 매분마다 /usr/bin/cronjob_bandit23.sh 가 실행되고 있습니다. 해당 파일을 확인해 봅시다. 짧은 코드가 있는데요.. myname=$(whoami) : whoami의 결과값을 변수 myname에 저장한다 ( whoami : 현재 접속한 계정명을 알려주는 명령어 ) mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)..

728x90
반응형