1. Bandit30 목표
There is a git repository at ssh://bandit30-git@localhost/home/bandit30-git/repo via the port 2220. The password for the user bandit30-git is the same as for the user bandit30.
Clone the repository and find the password for the next level.
Commands you may need to solve this level
git
2. Bandit30 구현
# 비밀번호 root 입력 접속
ssh -oStrictHostKeyChecking=no root@localhost -p 2220
useradd bandit31 && echo -e "fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy\nfb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy" | passwd bandit31
chmod 755 /home/bandit31
chown root:root /home/bandit31
chown -R root:root /home/bandit31/.[!.]*
echo fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy > /etc/bandit_pass/bandit31
chown bandit31:bandit31 /etc/bandit_pass/bandit31
chmod 400 /etc/bandit_pass/bandit31
useradd bandit30-git && echo -e "qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL\nqp30ex3VLz5MDG1n91YowTv4Q8l7CDZL" | passwd bandit30-git
chmod 750 /home/bandit30-git
mkdir -p /home/bandit30-git/repo
chmod 775 /home/bandit30-git/repo
git init --bare /home/bandit30-git/repo
chown -R bandit30-git:bandit30-git /home/bandit30-git/repo
chsh -s /usr/bin/git-shell bandit30-git
TMP_DIR=$(mktemp -d)
cd $TMP_DIR
# qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
# 패스워드 입력
GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no' git clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repo
cd $TMP_DIR/repo
cat <<'README' > $TMP_DIR/repo/README.md
just an empty file... muahaha
README
chmod 664 $TMP_DIR/repo/README.md
chown bandit30:bandit30 $TMP_DIR/repo/README.md
git config user.email "noone@overthewire.org"
git config user.name "Ben Dover"
git add $TMP_DIR/repo/README.md
git commit -m "initial commit of README.md"
git tag passwd
# git hash-object를 통해 HEAR-DOC을 통해
# 생성된 파일 정보를 저장하고 해당 SHA-1 해쉬 정보를 출력
# 출력된 해쉬정보를 git tag secret 명령어를 통해 매칭
git tag secret $(git hash-object -w --stdin <<EOF
fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy
EOF
)
# find .git/objects -type f 명령어를 치면 커밋혹은 hash-object를 통해
# 저장한 blob 객체파일들을 확인할 수 있음
# .git/objects/84/368f3a7ee06ac993ed579e34b8bd144afad351
# 와 같은 형식으로 저장되는데 이러한 참조 객체가 많아질 경우 용량이 많아지기 때문에
# .idx, .pack 형식으로 참조 정보들을 압축할 수 있음
# a 옵션 : 모든 객체를 패킹
# d 옵션 : 패킹 후 불필요한 loose objects를 삭제
# 대체 명령어 git gc 로도 가능
git repack -a -d
# qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
# 패스워드 입력
GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no' git push --all
# qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
# 패스워드 입력
# 태그 정보 푸시
GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no' git push --tags
3. Bandit30 문제풀의
# bandit30 로 설정한 패스워드를 입력하여 접속한다.
# qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
ssh -oStrictHostKeyChecking=no bandit30@localhost -p 2220
TMP_DIR=$(mktemp -d)
cd $TMP_DIR
# qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL
# 패스워드 입력
GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no' git clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repo .
# 태그가 참조하는 객체의 형식 확인
git tag | xargs -I {} sh -c 'echo "{} - $(git cat-file -t {})"'
# 패스워드 확인
git tag | xargs -I {} git show {} | awk '{if (length($0) == 32) print $0}' | uniq
'Wargame > Bandit' 카테고리의 다른 글
[ Docker ] Bandit Wargame 만들기 - 32번 문제 ( 33 / 33 ) (0) | 2024.09.06 |
---|---|
[ Docker ] Bandit Wargame 만들기 - 31번 문제 ( 32 / 33 ) (0) | 2024.09.05 |
[ Docker ] Bandit Wargame 만들기 - 29번 문제 ( 30 / 33 ) (0) | 2024.06.24 |
[ Docker ] Bandit Wargame 만들기 - 28번 문제 ( 29 / 33 ) (0) | 2024.06.21 |
[ Docker ] Bandit Wargame 만들기 - 27번 문제 ( 28 / 33 ) (0) | 2024.06.21 |