# CyberWarrior
OverTheWire 21->22. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 21->22.] 프로그램은 cron에서 자동 실행된다. => /etc/cron.d에서 구성을 확인하고, 실행 중인 명령을 확인 => cat /etc/cron.d cron crontab 파일 형식 crontab [-u 사용자아이디] ([-l/-r/-e/파일]) /etc/cron.d 과정 cd /etc -> ll -> cat ./crontab cd /etc/cron.d -> ll -> cat etc/crontab.d 
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 20->21.] 해당포트번호 localhost와 연결, 상대방이 올바른 19->20 패스워드를 받으면 20->21 패스워드를 준다. => 두 개의 창. 포트번호로 연결해서 패스워드 전송. nc [옵션] [호스트네임] [포트(s)] tmux screen [옵션] [명령어(인자)] 과정 ll -> suconnect가 SetUID 설정된 것을 확인 -> tmux (창0 진입) -> ctrl b + c (새 창 생성, 창1로 이동) -> 창1에서 net -lp 포트번호 (해당 포트와 통신)(포트는 아무거나) -> ctrl b + 0 (창0으로 이동) -> 창0에서 ./suconnect 포트번호 (SetUID 설정된 suconnect 파일 실행)(포트는 창1에서 net으로 연결했던 것) -> ctrl b + 1 (창
[Dreamhack - 포랜식 level 1] Snowing! (정답O)
Snowing! 드림이 : 우와! 밖에 눈이 많이와요! 드림맘 : 그렇네~ 드림이 : 거의 모두 하얀공간뿐이네요. 스테가노그래피 (steganography) 정의 : 메시지, 이미지, 또는 비디오 같은 일반적인 파일 안에 데이터를 숨기는 심층 암호 기술 원리 : 파일에 불필요한 데이터가 상당수 포함되어 있으며, 이런 노이즈를 다른 메시지로 대치해도 겉으로 확인되지 않는다는 사실을 이용함 (MSB는 주로 색상을 결정하기 때문에 사용X) 방법 비트 플레인 분산 방식 원리 : 상위 비트는 영향력이 크고(MSB), 하위 비트일수록 인지성이 감소(LSB) 예) 중요도가 낮은 비트들을 원하는 정보로 바꿔 넣는 방식 파일 뒤에 삽입하는 방식 원리 : 파일의 끝을 알리는 시그니처 뒤의 데이터는 무시된다는 사실을 이용 예) JPEG 파일의 경우, 푸터 시그니처인 FF 09 이후의 값들은 무시
OverTheWire 19->20. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 19->20.] 홈 디렉토리에서 setuid 바이너리를 사용해야 한다. => 홈 디렉토리에서 setuid가 설정된 것이 있는지 확인. 리눅스 기본권한 : 읽기(r), 쓰기(w), 실행(x) 리눅스 확장권한 : setuid, setgid, sticky bit... setuid 유사) setgid 유사) sticky bit chmod [심볼릭/8진수] [파일] find [옵션] [대상] cd /etc/bandit_pass -> ll -> bandit20의 소유자는 bandit20, umask는 400 (소유자만 read 가능) 확인 -> cd ~ -> ll (setuid설정된 파일 확인 목적) -> bandit20-do가 setuid 설정되어있는 것 확인 -> ./bandit2
OverTheWire 18->19. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 18->19.] 암호는 홈 디렉토리의 readme 파일에 저장되어있다. + 누군가 SSH로 로그인 할 때 로그아웃하도록 .bashrc를 수정했다. => 접속할 때 실행할 명령어를 같이 입력하기 .bashrc 접속과 명령어 동시 실행 : 뒤에 큰따옴표 ssh bandit18@bandit.labs.overthewire.org -p 2220 "cat readme" -> 출력 -> ctrl+Insert 이용하여 복사 > 아이디 : bandit19 암호 : awhqfNnAbc1naukrpqDYcF95h7HoMTrC
OverTheWire 17->18. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 17->18.] 홈 디렉토리에는 2개의 파일이 있다. => ll 다음 암호는 passwords.old와 passwords.new 사이에서 변경된 유일한 줄 + 힌트 diff => diff 명령어 사용 diff [옵션] [비교파일1] [비교파일2] diff3 [옵션] [비교파일1] [비교파일2] [비교파일3] -c -d -r -u -s -i -w 유사) cmp [비교파일1] [비교파일2] 유사) comm [옵션] [비교파일1] [비교파일2] ll -> diff -c passwords.new passwords.old -> passwords.new에서는 , passwords.old에서는 같은 위치에 존재 -> passwords.new에만 있는 문장 -> ctrl+Insert 이용하여 복사 -> bandit18 로그인 -> byeb
OverTheWire 12->13. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 12->13.] 암호는 hexdump인 data.txt 파일에 저장되어있다. => hexdump를 바이너리 데이터 파일로 변환하기 암호는 반복적으로 압축된 파일에 저장되어있다. => 압축 풀기 반복 cp [옵션] [복사할 디렉토리/파일] [복사될 디렉토리/파일] mv [옵션] [이동할 파일] [이동될 위치] xxd [-옵션] [변환할 파일명] strings [-옵션] [파일명] gzip gzip -d bzip2 bzip2 -kd tar -cvf [파일명.tar] [폴더명] tar -zcvf [파일명.tar.gz] [폴더명] tar -xvf [파일명.tar] tar -zxvf [파일명.tar.gz] ls -> xxd -r data.txt > data_bin -> file databin -> mv dataBin data_bin1.gz -> file data_bin
OverTheWire 16->17. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 16->17.] 암호는 31000~32000 범위의 localhost 포트에 현재 레벨 암호를 제출하여 검색할 수 있다. => openssl을 이용하여 현재 레벨 암호를 제출하기 수신 대기하는 포트를 찾아야 한다. => nmap을 이용하여 찾기 찾은 포트 중 SSL을 말하는 것과 그렇지 않은 것을 찾아야 한다. (찾는 서버가 아니면 보내는 그대로 되돌아온다) => openssl 명령어를 이용하여 결과 확인하기 netstat netstat -tunlp -t -u -a -n -l -o -p nmap nmap [Scan Type(s)] [Options] {target specification} -sT chmod chmod [OPTION] [MODE] [FILE] rwxrwxrwx tmp ls -> ll -> nmap -sT localhost -p 31000-320
OverTheWire 15->16. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 15->16.] 암호는 ssl암호화를 이용해서 localhost의 포트 30001에 현재 레벨의 암호를 제출하여 검색할 수 있다. => openssl s_client로 localhost의 포트 30001과 연결하기 openssl s_client openssl s_client [옵션] -connect host:port ls -> ll -> openssl s_client -connect localhost:30001 -> 현재 레벨 암호 -> ctrl+Insert 이용하여 복사 > 아이디 : bandit16 암호 : JQttfApK4SeyHwDlI9SXGR50qclOAil1 Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section
OverTheWire 14->15. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 14->15.] 다음 암호는 현재 레벨의 암호를 localhost의 포트 30000에 제출하여 검색할 수 있다. => 현재 레벨의 암호를 찾은 후, 제출하기 nc nc [옵션] [호스트] [포트] ls -> ll -> cd ./.ssh -> ll -> cat /etc/bandit_pass/bandit14 -> ifconfig -> nc localhost 30000 -> 이전 레벨 암호 -> ctrl+Insert 이용하여 복사 -> ctrl + d -> ctrl + d > 아이디 : bandit15 암호 : jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt
OverTheWire 13->14. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 13->14.] 암호는 /etc/bandit_pass/bandit14에 저장된다. => 해당 위치 열기 암호는 bandit14 사용자만 읽을 수 있다. => 암호를 직접 찾지 않고 위치를 넘겨서 접속하기 ssh -i [변경된 경로] user@sever_ip localhost : 컴퓨터 네트워크에서 사용하는 루프백 호스트명. 원격 컴퓨터인 것처럼 통신 가능. ls -> cd ../ -> ls -> cd ./bandit14 -> ll -> cd ./.ssh -> ls -> ifconfig -> ssh -i ~/sshkey.private bandit14@localhost -p 2220 -> yes > ssh -i ~/sshkey.private bandit14@localhost -p 2220
OverTheWire 11->12. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 11->12.] 암호는 모든 소문자와 대문자가 13자리 회전되어있다. => tr을 이용하여 거꾸로 치환. Rot13 : 영어 알파벳을 13글자씩 밀어서 만든다. tr tr 'A-Za-z' 'N-ZA-Mn-za-m' ls -> cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' -> ctrl+Insert 이용하여 복사 > 아이디 : bandit12 암호 : JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
OverTheWire 10->11. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 10->11.] 암호는 base64로 암호화된 데이터를 포함하고있다. => 인코딩/디코딩 사이트에서 base64로 디코딩하기 base64 파일명 base64 -di 파일명 ls -> base64 -di data.txt -> ctrl+Insert 이용하여 복사 > 아이디 : bandit11 암호 : 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
OverTheWire 9->10. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 9->10.] 암호는 사람이 읽을 수 있는 문자열 중 하나이다. => 문자열 찾기 암호는 여러 '='문자가 앞에 온다. => '=='문자열 찾기 strings grep '문자열' (grep '문자열*' ) ls -> strings data.txt | grep '==*' -> ctrl+Insert 이용하여 복사 > 아이디 : bandit10 암호 : G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
OverTheWire 8->9. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 8->9.] 한번만 나타나는 유일한 줄의 text => 중복되지 않는 라인 찾기 sort uniq (-u ) (-d ) ls -> sort data.txt | uniq -u -> ctrl+Insert 이용하여 복사 > 아이디 : bandit9 암호 : EN632PlfYiZbn3PhVK3XOGSlNInNE00t
OverTheWire 7->8. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 7->8.] vi 파일명 esc (일반모드에서) /단어 vi data.txt -> esc -> /millionth -> ctrl+Insert 이용하여 복사 -> esc -> :q > 아이디 : bandit8 암호 : TESKZC0XvTetK0S9xNwm25STk5iWrBvP
OverTheWire 6->7. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 6->7.] 암호는 서버의 어딘가에 저장되어있다. => / 가 서버(root)를 의미. find 명령어 사용하여 탐색 파일 특징은 owned by user bandit7, owned by group bandit6, 33 bytes in size 이다. => find 명령어의 옵션 이용 find [경로] -user 사용자 find [경로] -group 그룹 /dev/null find / -user bandit7 -group bandit6 -size 33c 2>/dev/null -> cat /var/lib/dpkg/info/bandit7.password -> ctrl+Insert 이용하여 복사 > 아이디 : bandit7 암호 : z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
OverThewire 5->6. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 5->6.] 암호는 inhere 디렉토리 어딘가에 있는 파일에 저장되어있다. => find 명령어 사용하여 탐색 파일 특징은 human-readable, 1033 bytes in size, not executable 이다. => find 명령어의 옵션 이용 find [경로] -size [사이즈] find [경로] -readable find [경로] -executable find [경로] ! -executable ls -> cd inhere -> find ./ -readable -size 1033c ! -executable -> cat ./maybehere07/.file2 -> ctrl+Insert 이용하여 복사 > 아이디 : bandit6 암호 : P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
OverTheWire 4->5. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 4->5.] 암호는 inhere 디렉토리의 사람이 읽을 수 있는 유일한 파일에 저장되어있다. => 파일의 타입 알아보기 ls -> cd inhere -> ls -> file ./-file* -> cat ./-file07 -> ctrl+Insert 이용하여 복사 > 아이디 : bandit5 암호 : lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
OverTheWire 3->4. (정답O)
✔ 문제풀이 해설이 상세함. 정답 스포 주의!!! ✔ [OverTheWire 3->4.] 암호는 inhere 디렉토리의 숨겨진 파일에 저장되어있다. => 숨겨진 파일까지 모두 확인할 수 있는 현재 디렉토리 내 리스트 보기 ls -> cd inhere -> ls -al -> cat .hidden -> ctrl+Insert 이용하여 복사 > 아이디 : bandit4 암호 : 2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe