<Level 10 - Level 11>
data.txt가 base64로 인코드 되어 있음.
cat data.txt 를 넘겨줘서 base64 명령어를 쓴다.
base64 [파일명] -> base64로 인코딩
base64 [파일명] --decode ->base64를 디코딩
<Level 11 - Level 12>
data.txt 에 Rot13 암호화가 된 비밀 번호가 있다.
알파벳을 13자리 뒤로 밀었다는 소리...
tr 문자열1 [문자열2]
<Level 12 - Level 13>
data.txt 는 비밀 번호를 여러 번 압축을 한 후 hexdump로 바꾼 파일.
먼저 hexdump 를 풀어준다.
// 문제에서 data.txt를 복사해서 다른 파일로 푸는 걸 권장함. test.txt를 만들어 줌.
=> /tmp에 새 디렉터리를 만들고, data.txt의 복사본인 test.txt를 넣어둠.
xxd 파일명 -> hex dump로 만들어준다.
xxd -r 파일명 -> hex dump인 파일을 되돌려준다.
file 명령어로 xxd_test.txt을 확인해 보니, gzip으로 압축된 data2.bin 파일이었음.
xxd_test.txt 파일을 원래대로인 data2.bin.gz로 바꿔준다.
gzip 파일명 -> gzip으로 압축
gzip -d 파일명 -> gz 확장자 파일을 압축 해제
file로 압축 해제된 data2.bin 을 보니 bzip2으로 압축된 파일이었음.
압축 해제를 위해 먼저 파일명을 바꿔줌.(mv)
bzip 파일명 -> bzip으로 압축
bzip -d 파일명 -> bzip 압축 파일을 압축 해제
file로 알아 보니, 원래는 data4.bin이 gzip으로 압축된 파일이었음.
같은 방식으로 이름 바꿔주고, 압축 해제하니 나온 파일.
tar 파일이었다...ㅠ.ㅠ
tar cvf 파일명 파일1 파일2 ... -> 여러 파일을 파일명의 tar로 합침
tar xvf 파일명 -> tar 파일을 풀어헤침...
// c, x, v, f는 다 각각 기능이 있는 건데, 대부분 이렇게 3개를 한번에 쓰나 보다... 교수님도 이렇게 알려주셨음 ^^;
한 번 더 해주면, 얘도 tar 파일이네... 이하 동일
tar 풀어주면 bz2 파일이 나온다...
이름 변경 후 압축 해제...
bz2 파일 바꿔서 풀어주면 tar 파일인 data6.bin이 나온다. ㅠ.ㅠ
tar 파일 풀어주면 나오는 data8.bin은 원래 data9.bin인 gzip 압축 파일이라고 한다...
이름 바꿔서 압축 해제
압축 해제하면 data9.bin이 나온다.
확인해 보니 ASCII text 파일...!!! 야호...
<Level 13 - Level 14>
ssh 접속 시 비밀 번호를 몰라도 ssh private key...를 입력하면 접속 가능 (-i 키 이름 옵션)
bandit14에 접속해 /etc/bandit_pass/bandit14 를 읽어주면 비밀 번호가 나온다.
<Level 14 - Level 15>
localhost 서버로 지금의 비밀 번호를 입력하면 다음 비밀 번호를 준다.
nc [서버 이름] [포트 번호]
<Level 15 - Level 16>
이번에는 SSL encryption을 이용해 비밀 번호를 보낸다.
openssl s_client -connect [서버]: 포트
SSL 인증서 정보가 주르륵 뜨고 입력 대기 상태가 된다.
<Level 16 - Level 17>
포트 번호 31000부터 32000 사이에 SSL를 서비스하는 포트...를 찾아서 비밀 번호를 보내야 한다.
nmap 서버 이름
-> -p 옵션을 주면 포트 번호의 범위를 지정할 수 있다.
범위 내에 996개 포트는 닫혀 있는 거고 열려 있는 포트 4개만 표시를 해줬다.
비밀 번호를 보냈을 때 단순하게 echo back하는지 아닌지 확인해야 한다...
4개를 다 하나하나 확인해줘야 하는 모양...
31790 포트에 보내면, 위처럼 SSL 인증서 정보가 뜨고 입력 대기 상태가 된다.
비밀 번호를 입력하면 SSL private key가 뜬다!
얘를 파일로 저장해서 <Level 13 - Level 14>처럼 접속한다.
+)
디렉터리를 생성할 때 현재 위치가 영향을 끼치는 것 같다...
홈 디렉터리에서 만들었을 때랑 /tmp 에서 디렉터리를 만들었을 때 접근 권한이 달랐다...
아무튼 새 디렉터리를 만들어서 안에 private key를 저장해준다.
키가 저장된 파일을 600으로 접근 지정해줘야 한다.
읽기 가능해야 하고... 777로 아예 열어두니까 그것도 안 된다고 거부하더라...
chmod [접근 지정 번호] [파일]
bandit17에 들어가서 /etc/bandit_pass/bandit17을 읽으면 비밀 번호가 나온다.
<Level 17 - Level 18>
bandit17의 홈 디렉터리에 있는 passwords.new, passwords.old 파일이 딱 1줄이 다른데 이게 비밀 번호.
diff [파일1] [파일2] -> 두 파일 사이 내용을 비교해준다.
(-c 옵션을 주면 다른 부분의 라인에 느낌표(!)를 붙임)
// bandit18으로 넘어갈 때 "Byebye!"가 다음 문제랑 관련이 있다고...
<Level 18 - Level 19>
홈 디렉터리 readme에 다음 단계 비밀 번호가 있다.
누가 .bashrc를 조작해서 SSH 접속 되자마자 Bye Bye... 종료가 된다.
SSH 접속 후 바로 cat을 실행하도록 명령어를 붙여 주면 된다.
이어서 붙여 주니 인사하는 라인이 안 뜬다...?
내부적으로 어떻게 돌아가는지 나중에 봐야겠다
<Level 19 - Level 20>
홈 디렉터리에 있는 bandit20-do 라는 setuid 바이너리 파일이 있다는데 실행해서 어떻게 쓰는지 보라고 한다.
얘를 실행하면 bandit20의 권한으로 실행이 되나 보다.
cat을 이어서 붙여주면 bandit20의 권한으로 실행 된다.
'System Hacking > OverTheWire' 카테고리의 다른 글
OverTheWire Bandit 30 - 34 (0) | 2022.07.06 |
---|---|
OverTheWire Bandit 20 - 30 (0) | 2022.07.04 |
OverTheWire Bandit 0 - 10 (0) | 2022.07.01 |