전체 글 259

OverTheWire_Level 28 -> Level 29

Lv 29 > 이전 포스팅에서의 문제의 내용 자체는 완전히 동일합니다. 그러나 이번에는 README.md라는 파일을 열어보면 패스워드가 나와있지 않습니다. .md 파일은 [ 마크다운(MarkDown) ] 언어 파일로, 특히 github에서 아래 사진과 같이 " Add a README file " 항목을 체크하여 Repository를 추가하게 되면 README.md 파일이 추가되며, 해당 Repository의 프로젝트에 대한 설명, 기능 등을 기록할 수 있는 파일이 생성됩니다. markdown 파일 구성이 [ Python] 파이썬 ] 카테고리에서 자주 사용했던 .ipynb (Jupyter Notebook file)과 유사하다고 느껴집니다. 본론으로 돌아와서 git log 명령에서 -p ..

리눅스 워게임 2023.01.31

OverTheWire_Level 27 -> Level 28

Lv 28 > Git Repository (깃허브 저장소) 위치는 아래와 같습니다. [ ssh://bandit27-git@localhost/home/bandit27-git/repo ] 해당 저장소의 파일을 복사해야 합니다. 홈 디렉터리에서는 다운로드가 되지 않아 /tmp 디렉터리 아래에 디렉터리를 생성하여 다운로드합니다. port 22 어쩌구 오류가 또 나왔습니다. 2220 포트로 다시 다운받겠습니다. repo 디렉터리가 생긴 것을 확인할 수 있습니다. repo 디렉터리를 열면 README 파일이 보이고, 해당 파일 안에 bandit28의 비밀번호가 저장되어 있습니다. bandit28 password is : AVanL161y9rsbcJIsFHuw35rjaOM19nR

리눅스 워게임 2023.01.30

OverTheWire_Level 26 -> Level 27

Lv 27 > bandit26의 홈 디렉터리를 살펴보면 bandit27-do 파일이 있습니다. 퍼미션이 [ -rwsr-x--- ]로 특수 권한이 설정되어 있습니다. (Set-UID) [ ./bandit27-do 명령어 ] 형식으로 파일을 실행하면 bandit26이 아닌, bandit27의 권한으로 실행해주는 파일로 보입니다. 지난번 문제가 어려웠어서 그런지, 쉬어가는 단계처럼 느껴집니다. bandit26에 다시 접속하는 상황이 오면 저 단계들을 또 밟아야 하니, 빠르게 bandit27의 패스워드를 가져가라는 느낌도 납니다. bandit27 password is : YnQpBuifNMas1hcUFk70ZmqkhUU2EuaS

리눅스 워게임 2023.01.29

OverTheWire_Level 25 -> Level 26

Lv 26 > bandit26은 /bin/bash쉘이 아닌, 다른 무언가라고 합니다. 이 쉘을 찾아내어 어떠한 쉘인지, 어떻게 작동하는지, 어떻게 벗어나는지 알아봐야 합니다. 현재 사용중인 쉘은 당연하게도 배시쉘(/bin/bash)이고, /etc/shells 파일을 확인하여 여러가지 쉘들이 설치되어 있는 것을 확인했습니다. bandit26은 위에서 봤던 /usr/bin/showtext 쉘을 사용중입니다. 처음 보는 쉘입니다. 어떻게 연결할지 막막했는데, 홈 디렉터리에 bandit26.sshkey 파일이 있었습니다. 그러나 위 사진처럼 튕겨나옵니다. 도저히 못찾겠어서 찾아보니 bandit26으로 ssh 접속을 시도해서 [ exit 0 ]코드가 실행되지 않게 [ more ~/text.tx..

리눅스 워게임 2023.01.28

OverTheWire_Level 24 -> Level 25

Lv 25 > Daemon은 Port 30002번에서 수신 대기중이라고 합니다. [ pago-services2 ] 라는 데몬이 수신 대기중인 것을 확인할 수 있습니다. 해당 포트에 bandit24의 비밀번호와 4자리의 핀을 입력해야 하지만, Brute-forcing(무차별 대입 공격) 외에는 핀을 확인할 방법이 없다고 합니다. 입력은 위와 같이 bandit24의 비밀번호와 4자리의 핀 번호를 개행이 아닌 공백으로 구분합니다. 쉘 스크립트를 작성해서 무차별 대입 공격을 진행하겠습니다. [ brfc.sh ] 라는 파일을 생성한 후, 나중에 쉘 스크립트를 실행하기 위해 미리 퍼미션도 바꿔줍니다. var라는 변수를 생성 후 0000부터 9999까지 반복시킵니다. [ bandit24 패스워드 ..

리눅스 워게임 2023.01.27

OverTheWire_Level 23 -> Level 24

Lv 24 > 이번에도 /etc/cron.d 디렉터리를 확인해야 합니다. NOTE 1, 2를 보면 쉘 스크립트를 작성해야 되고, 실행되면 해당 스크립트 파일이 삭제된다고 합니다. 그러나 파일들의 내용이 복사 붙여넣기 수준으로 똑같기 때문에, 이전에 사용했던 방법으로도 충분히 패스워드를 얻어낼 수 있습니다. bandit24 password is : VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar 물론 아래와 같은 일련의 과정으로 쉘 스크립트 파일을 직접 만들어서 실행해도 무방합니다.

리눅스 워게임 2023.01.26

OverTheWire_Level 22 -> Level 23

Lv 23 > 이번에도 /etc/cron.d 디렉터리를 확인해야 합니다. cronjob_bandit23 파일을 확인하면 될 것 같습니다. 이번에도 같은 위치에 쉘 스크립트 파일이 존재하는 것을 확인할 수 있습니다. 현재 계정 bandit22를 기준으로 디렉터리를 출력해주는 것을 확인할 수 있습니다. $mytarget이라는 변수를 가져와서 출력해주는 것이니, /tmp 디렉터리 아래의 값 ($mytarget)은 아래의 명령 출력 결과와 같아야 합니다. echo I am user bandit22 | md5sum | cut -d ' ' -f 1 즉, bandit22를 bandit23으로 변경하면 bandit23을 기준으로 $mytarget값을 알아낼 수 있습니다. bandit23 passwo..

리눅스 워게임 2023.01.25

OverTheWire_Level 21 -> Level 22

Lv 22 > /etc/cron.d 디렉터리를 먼저 확인하겠습니다. 여러 파일들이 나열되어 있는 것을 확인할 수 있습니다. 다음 단계인 bandit22와 관련있어 보이는 cronjob_bandit22를 열어 확인해보면 아래와 같습니다. reboot할 때마다 /usr/bin/cronjob_bandit22.sh을 자동으로 실행하고, /usr/bin/cronjob_bandit22.sh 실행 시 표준 출력과 표준 에러를 모두 /dev/null로 버리는 것을 확인할 수 있습니다. 또한 * * * * * 이니, 매 분마다 실행되는 것을 알 수 있습니다. 해당 파일은 .sh로 되어있는 것을 보니, 쉘 스크립트 파일로 추측됩니다. crontab에 대해 설명해둔 포스팅이 분명 있었던 것 같은데 찾지 ..

리눅스 워게임 2023.01.24

OverTheWire_Level 20 -> Level 21

Lv 21 > 홈 디렉터리에 setuid 바이너리 "suconnect"가 있습니다. 포트를 설정해주면, 해당 포트를 타고 localhost에 연결한다고 합니다. [ Commands you may need to solve this level ] 에서 힌트를 찾겠습니다. 이전에 사용해봤던 Netcat (nc)을 사용하겠습니다. (OverTheWire_Level 14 -> Level 15 포스팅) Background에서 nc를 Listener Mode로 열겠습니다. netstat -l 위 명령어를 사용하여 어떤 포트를 사용하고 있는지 미리 훑어봅니다. 저는 임의로 5555번의 포트를 사용하겠습니다. 명령 뒤에 "&" 하나만 붙여주면 백그라운드로 실행됩니다. nc -lp 5555 & 명령으로..

리눅스 워게임 2023.01.23

OverTheWire_Level 19 -> Level 20

Lv 20 > /etc/bandit_pass에 암호가 있다고 하니, /etc/bandit_pass/bandit20 파일을 열어야 한다는 말 같습니다. 홈 디렉터리에 있는 setuid 바이너리를 사용해야 합니다. 홈 디렉터리를 살펴보니 bandit20-do 파일이 있습니다. 특수권한은 [Linux] 리눅스 특수 권한 포스팅 / [Linux] 리눅스 특수 권한_2 포스팅에서 다룬 내용입니다. 퍼미션이 -rwsr-x---이므로 소유주의 실행 권한이 존재하는 4750의 퍼미션 값을 가집니다. (만약 소문자 s가 아닌, 대문자 S였다면 소유주의 실행 권한이 존재하지 않기 때문에 4650이 됩니다.) 즉, bandit20-do 파일을 실행시키면 임시로 소유주의 권한인 bandit20의 권한을 취..

리눅스 워게임 2023.01.22