일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Git
- Google Refund
- react
- Spring Boot
- express
- MySQL
- Camera Zoom
- server
- java
- SDK upgrade
- Unity Editor
- unity
- css framework
- nodejs
- screencapture
- Digital Ocean
- Camera Movement
- Google Developer API
- rpg server
- --watch
- OverTheWire
- Packet Network
- docker
- springboot
- draganddrop
- spread 연산자
- critical rendering path
- Unity IAP
- mongoDB
- linux
- Today
- Total
우당탕탕 개발일지
[Linux] OverTheWire Lv11~ Lv20 본문
다른문제들은 아래 링크
[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
'ETC' 카테고리의 다른 글
[Linux] OverTheWire Lv21~ Lv33 (1) | 2024.03.21 |
---|---|
[Linux] OverTheWire Lv0 ~ Lv10 (0) | 2024.03.17 |
[Kali] Docker 에 kali linux 설치하기 (0) | 2024.03.15 |
[Git] access token 이 변경되었을 때 재로그인 하는 방법 ( authentication fail) (0) | 2023.08.12 |
[Flutter] MAC에서 Flutter 를 설치해보자 (0) | 2023.07.26 |