Notice
Recent Posts
Archives
Today
Total
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Recent Comments
관리 메뉴

우당탕탕 개발일지

[Linux] OverTheWire Lv11~ Lv20 본문

Linux

[Linux] OverTheWire Lv11~ Lv20

devchop 2024. 3. 19. 17:28

다른문제들은 아래 링크 

 

[Linux] OverTheWire Lv0 ~ Lv10

https://overthewire.org/wargames/bandit/bandit0.html

journal-devchop.tistory.com

 

 

 

[Linux] OverTheWire Lv21~ Lv34

Lv20

journal-devchop.tistory.com

 


 

lv11.

tr 명령어에 대한 문제이다. 아스키에서 a의 13번째 위 문자는 n이다 문자 a-z 를 n-z,a-m 으로 변경하는 명령어는 다음과 같다.

cat data.txt | tr '[a-z]' '[n-za-m]'

##대문자도 적용하려면
cat data.txt | tr '[a-z]' '[n-za-m]' | tr '[A-Z]' '[N-ZA-M]'

## 간단하게 줄이면 아래처럼 된다.
cat data.txt | tr '[a-zA-Z]' '[n-za-mN-ZA-M]'

## JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

 

lv12.

여러가지 압축 형식과 , 그 파일들을 압축해제하는 문제이다.

처음에 hex dump 로 되어있는데 , xxd 명령어를 이용하여 binary 로 변경 후 file 명령어를 통해 파일의 타입을 확인한다. 알맞는 압축 명령어를 이용해 하나씩 계속 압축을 해제해주면 언젠가는 비밀번호가 나온다.

gzip, tar, bzip2 가 등장했다.

 

 

 

[Linux] 파일을 16진수로 보여주는 xxd 명령어의 사용법과 예제

Practice makes perfect!

twpower.github.io

 

mkdir /tmp/folder ## Permission때문에 수정이 안되므로 다른곳으로 복사해 갈 예정.
cd /tmp/folder
cp ~/data.txt data.txt ## file 복사. 문제에서 제안한대로 수행했음.

xxd -r data.txt > data2 ## hex dump 를 binary 로 변환해서 'data2' 란 이름으로 저장
file data2 ## 형식을 확인.  gzip

mv data2 data2.gz ## 뒤에 형식을 붙여줌
gzip -d data2.gz
file data2 ## 압축해제된 파일의 형식을 확인 , bzip2로 확인.

mv data2 data2.bz2
bzip2 -d data2.bz2
file data2 ## 형식을 확인. gzip

mv data2 data2.gz
gzip -d data2.gz
file data2 ## 형식확인, tar

mv data2 data2.tar
tar -xf data2.tar
ls ##data5.bin 파일이 생겼음. 
file data5.bin ## tar임


..이하생략..
##wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

 

 

 

 

lv13

ssh 의 -i 옵션에 대한 문제이다.

ssh 에서, 지금까지는 계정이름과 비밀번호를 이용해 접속했다면, 이번에는 private key 를 이용해 접속하는 방법이다.

ls ## sshkey.private 파일이 있는지 확인한다.
ssh -i sshkey.private bandit14@localhost -p 2220 ##-i 옵션을 이용해 privatekey 로 접속시도
cd /etc/bandit_pass  #파일위치로 이동.
cat bandit14 #확인

##fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq

 

 

lv14

nc 명령어에 대한 문제. 네트워크 연결을 통해 데이터를 전송/수신하는 작업을 수행한다.

nc localhost 30000  ## connect

##Correct!
##jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt

 

lv15

openssl 과 s_client 옵션에 대한 문제 .SSL/TLS 프로토콜을 구현한 라이브러리라고 하낟. 호스트에 다음과같이 접속한다.

openssl s_client -connect localhost:30001

## read R Block 이라는 메시지가 뜨면 LV14의 비밀번호를 입력해준다.
##jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt

##JQttfApK4SeyHwDlI9SXGR50qclOAil1 
##lv15의 비밀번호 출력

 

 

lv16. 

nmap을 이용해 열려있는 포트를 확인한 후 , 하나씩 lv15 방법과 동일하게 ssl 연결을 해준다. 이중 딱 한개만 RSA private key를 제공하는데, 이를 이용해 sshkey.private 파일을 생성 후, lv17에 privatekey를 이용해 접속한다.

nmap -p 31000-32000 localhost #포트번호 범위 제공하여 검색

openssl s_client -connect localhost@[리스트에나온 포트 한개씩 시도]

## ----- BEGIN RSA ---
## ---- END RSA ----

mkdir /tmp/keygen
vi sshkey.private

## 복사한내용을 붙여넣는다. --BEGIN 부분과 --END 부분까지 모두 복사해야 한다.
chmod 600 /tmp/keygem/sshkey.private ## 관리자 외에 아무도 접근할 수 없도록 설정한다.

ssh -i sshkey.private bandit17@localhost -p 2220
cat /etc/bandit_pass/bandit17

##bandit17의 비밀번호 확보.
##VwOSWtCA7lRKkTfbr2IDh6awj9RNZM5e

 

 

lv17

두 파일의 내용을 비교하는 diff 명령어이다. 휴 쉬어가는 타임인가. 서로 다른부분만 출력해준다. 여러가지 옵션도 있으니, 찾아보는것도 좋을것같다.

diff passwords.new passwords.old
##hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg

 

lv18

일반적인 ssh 방법으로 bandit18 에 접속할 경우 접속과 동시에 byebye를 외치며 쫓겨난다. 따라서 접속과 동시에 명령어를 수행해서 bandit19의 비밀번호만 쏙 빼오도록 하자 

ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme

##접속과 동시에 cat readme command 호출
##awhqfNnAbc1naukrpqDYcF95h7HoMTrC

 

lv19

bandit19 에 접속해서 ls-al 을 수행해보면 bandit20-do의 권한이 -rwsr-x--- 인데, s 는 setuid가 걸린 파일임을 뜻한다. 즉, 저 파일을 실행하면 일시적으로 id가 bandit20으로 변경된다는 뜻이다.

##cat /etc/bandit_pass/bandit20 
##Permission Denied

## ./bandit20-do [command] 
## [command] 부분은 bandit20의 권한으로 실행됨.

./bandit20-do cat /etc/bandit_pass/bandit20
##VxCazJaVykI6W36BkBU0mJTCM8rR95XT

 

lv20

tmux (Terminal MUlti pleXer ) 를 이용해 터미널을 2개로 만들어서, 한쪽은 port를 오픈하고 다른쪽은 해당 포트로 접속을 시도한다. 포트를 오픈한 쪽에서 lv20의 비밀번호를 입력하면 lv21 의 비밀번호를 돌려준다는 문제이다.

 

우선 tmux를 이용해 터미널을 2개로 만든다.

ssh bandit20@bandit.labs.overthewire.org -p 2220

tmux
## ctrl+b+%   ## 화면 추가
## crtl+b + 화살표 ## 터미널 이동

##A터미널에서 port를 오픈한다. 번호는 임의로 설정.
nc -lp 9999

## B 터미널에서 해당 포트로 접속한다. 문제에서 나온것처럼 suconnect 를 이용한다.
./suconnect 9999

## A터미널에서 lv20의 비밀번호를 입력한다.
## NvEJF7oVjkddltPSrdKEFOllh9V1IBcq  획득완료!

 

tmux 에 대해 공부를 해두면 쓸모가 많을것같다 

 

Linux 초보의 tmux (terminal multiplexer) 입문

tmux는 많은 pseudoterminal을 window와 session 단위로 관리하는 도구이다. 하나의 tmux 서버가 세션을 관리하고, tmux 클라이언트는 tmux 서버와 소켓으로 통신하며 그 세션의 pseudoterminal들을 사용자가 원하

dgkim5360.tistory.com

 

'Linux' 카테고리의 다른 글

[Linux] OverTheWire Lv21~ Lv33  (1) 2024.03.21
[Linux] OverTheWire Lv0 ~ Lv10  (0) 2024.03.17
[Kali] Docker 에 kali linux 설치하기  (0) 2024.03.15