🐧Bandit series:
một series học về linux căn bản của overthewire.org
một series học về linux căn bản của overthewire.orgtags: Linux
Level 0:
https://overthewire.org/wargames/bandit/bandit0.html https://overthewire.org/wargames/bandit/bandit1.html
Ở level 0 challenge sẽ giúp mình hiểu mình kết nối remote với một server thông qua giao thức ssh.
![]()
Khi đang nhập thông qua giao thức ssh ta sẽ được hỏi password để có thể truy cập vào server. Sau khi vào được server là dùng lệnh ls để liệt kê các file đang có sẵn trong folder và lệnh cat để thể hiện nội dung file ta cần đọc.
Level 1:
https://overthewire.org/wargames/bandit/bandit2.html
Sau khi có password ta dùng password để đăng nhập vào bandit01.
ssh -p 2220 bandit1@bandit.labs.overthewire.orgChallenge giúp ta đọc một file với kí tự đặc biệt ở đầu tên file
Level 2:
https://overthewire.org/wargames/bandit/bandit3.html
ssh -p 2220 bandit2@bandit.labs.overthewire.orgChallenge này giúp ta đọc file với tên file có dấu space
Level 3:
https://overthewire.org/wargames/bandit/bandit4.html
ssh -p 2220 bandit3@bandit.labs.overthewire.orgChallenge này giúp ta đọc những file bị ẩn trong folder và đọc file có kí tự đặc biệt trong tên như ở Level 1![]()
Trong folder inhere khi sử dụng lệnh ls ta không thấy bất kì file hay folder nào hiện lên do đó ta sử dụng lênh ls -a để xem những file bị ẩn. Sau đó ta thấy file .hidden có kí tự đặc biệt ta dùng cú pháp -- .hidden để đọc file.
Level 4:
https://overthewire.org/wargames/bandit/bandit5.html
ssh -p 2220 bandit4@bandit.labs.overthewire.orgChallenge này giúp ta đọc file với tag human-readable
![]()
khi sử dụng ls trong folder inhere ta thấy có rất nhiều file nếu cat từng file thì rất mất thời gian. Do đó ta sử dụng lệnh file để xem loại file. Cú pháp * sẽ duyệt qua tất cả file trong folder. Ta thấy ở file
-file07 :ASCII textlà file có thể đọc được. Sử dụng cat để đọc file.
Level 5:
https://overthewire.org/wargames/bandit/bandit6.html
ssh -p 2220 bandit5@bandit.labs.overthewire.orgChallenge yêu cầu ta đọc file với tag human-readable, 1033 byte và not executable
![]()
Tương tự như level 4 ở đây chúng ta có rất nhiều folder do đó không thể cd từng folder mà kiếm được. Chúng ta sử dụng lệnh find. Cú pháp ./ là ta sẽ duyệt qua tất cả cả folder trong folder hiện tại, -size là kích thước file ta cần tìm, -readble là loại file có
ASCII textvà -not -executable là file không thực thi được. Sau khi có được đường dẫn thì cd và cat, cú pháp && cho phép ta thực thi 2 lệnh sau khi lệnh đầu đã được hoàn thành.
Level 6:
https://overthewire.org/wargames/bandit/bandit7.html
ssh -p 2220 bandit6@bandit.labs.overthewire.orgChallenge giúp ta biết về đặc quyền của user và group trên từng file
![]()
Chúng ta sử dụng lệnh find để tìm file mà ta cần tìm với cú pháp / chúng ta sẽ duyệt toàn bộ folder trên toàn server do đó khi xuất ra màn hình sẽ có rất nhiều dòng command báo lỗi. Để khác phục ta sử dụng 2>/dev/null để bỏ qua những command báo lỗi. https://linuxhint.com/two-dev-null-command-purpose/ Với -user và -group ta sử dụng để tìm user và group cần tìm. Sau đó sử dụng cd và cat.
Level 7:
https://overthewire.org/wargames/bandit/bandit8.html
ssh -p 2220 bandit7@bandit.labs.overthewire.orgChallenge này yêu cầu ta tìm dòng có chữ cho trước trong một file
![]()
Sử dụng lệnh grep với cú pháp -w để tìm từ mà ta cần tìm trong file.
Level 8:
https://overthewire.org/wargames/bandit/bandit9.html
ssh -p 2220 bandit8@bandit.labs.overthewire.orgChallenge này yêu cầu ta tìm dòng chỉ xuất hiện duy nhất 1 lần trong file
Ở đây ta sử dụng lệnh sort để sắp xếp lại các dòng giống nhau. Sau đó sử dụng lệnh uniq -u lệnh này sẽ xuất ra màn hình dòng chỉ xuất hiện một lần duy nhất. Ở đây có cú pháp | cú pháp này sẽ lấy kết quả mà command 1 đã thực hiện sau đó thực hiện command 2.
Level 9:
https://overthewire.org/wargames/bandit/bandit10.html
ssh -p 2220 bandit9@bandit.labs.overthewire.orgChallenge này yêu cầu ta xuất chuỗi human-readable strings và đứng trước có kí tự đặc biệt![]()
Ta sử dụng lệnh strings để lọc ra các
human-readable stringslà các chuỗi cóASCII textsau đó sử dụng grep để tìm các string có kí tự**.
Level 10:
https://overthewire.org/wargames/bandit/bandit11.html
ssh -p 2220 bandit10@bandit.labs.overthewire.orgChallenge này yêu cầu ta decode một đoạn mã đã bị encode bằng base64
![]()
Ta sử dụng lệnh base64 -d để giải mã đoạn mã đã bị mã hóa để lấy password.
Level 11:
https://overthewire.org/wargames/bandit/bandit12.html
ssh -p 2220 bandit11@bandit.labs.overthewire.orgChallenge này yêu cầu ta decode một đoạn mã bị encode bằng rot13
![]()
Sau khi cat file
data.txtchúng ta sẽ thấy một đoạn mã bị encode, ta có đem nó decode bằng tool trên google. Với Linux thì không có lệnh rot13 sẵn như base64. Chúng ta sẽ sử dụng lệnh tr lệnh này cho chúng ta dịch chuyển hoặc xóa các kí tự theo quy luật mà ta sắp xếp.
Level 12:
https://overthewire.org/wargames/bandit/bandit13.html
ssh -p 2220 bandit12@bandit.labs.overthewire.orgĐây là một trong những level theo mình là khá khó cho beginner ở mức độ easy. Challenge này giúp ta hiểu được các dạng file nén trên Linux, cách phân biệt giữa chúng, cách nén và giải nén những loại file đóĐầu tiên đề kêu ta tạo một thư mực trong đường dẫn /tmp ở đây ta sử dụng lệnh mkdir để tạo folder có tên là baigiai trong folder /tmp. Sử dụng lệnh cp để copy file
data.txtvào đường dẫn vừa tạo, sau đó sử dụng cd để vào đường dẫn.
![]()
Sau khi cat file
data.txtra chúng ta sẽ thấy như hình ở trên đây là một file hexdump. Lệnh head sẽ xuất ra 10 dòng đầu tiên của một file do đó sẽ dễ nhìn hơn.![]()
Lệnh xxd -r sẽ trả về giá trị binary của file hex. Ở đây ta lưu giá trị trả về vào file tên là
data. Ta sử dụng lệnh file để xem loại file. Ta sẽ thấy dòng chữgzip compressed datado đó đây là file có data được nén theo định dạnggzip.
![]()
Sử dụng mv để chuyển từ file
datasang tệpdata.gzLệnh gzip -d sẽ giải nén tệpdata.gz, sử dụng lệnh ls ta sẽ thấy lại filedata, nhưng khi sài file ta sẽ thấy dòng thông báo mớibzip2 compressed data--> Data dạng bị nén dưới định dạngbzip2.![]()
Tương tự như với gzip ta lặp lại các thao tác cũ.
Sau khi lặp lại các thao tác thì lúc này sau khi sử dụng file ta gặp một dòng thông báo mới. Data dạng bị nén trong định dạng
tar.
Sau khi đổi file
datathành tệp tar. Ta sử dụng lệnh tar xf để giải nén filetar.![]()
Lặp lại các quá trình như trên.
![]()
Sau khi hoàn tất thì khi sử dụng lệnh file sẽ gặp lại dòng
ASCII textsử dụng cat để đọc file.
Level 13:
https://overthewire.org/wargames/bandit/bandit14.html
ssh -p 2220 bandit13@bandit.labs.overthewire.orgChallenge này cho ta biết ngoài cách nhập password để đăng nhập thì còn cách là sử dụng sshkey để xác thực thay cho password![]()
Ta sẽ copy sshkey lại lưu vào một file trong máy.
Sử dụng sskey vừa lưu để đăng nhập vào Level 14.
Level 14:
https://overthewire.org/wargames/bandit/bandit15.html
ssh -p 2220 bandit14@bandit.labs.overthewire.org -i ...Challenge này giúp ta biết về localhost trên server
![]()
Sử dụng sshkey vừa nãy để đăng nhập vào server thay cho password, cú pháp -i để xác thực sshkey.
![]()
Quay lại Level 13 chúng ta vẫn còn một dữ liệu chưa xài đó là
/etc/bandit_pass/bandit14 and can only be read by user bandit14. Chỉ khi nào đăng nhập vào bằng user của bandit14 chúng ta mới chạy được dữ liệu này. Sau khi truy cập và cat được filebandit14. Ta quay lại mục đích của Level này là kết nối vào localhost trên server.
![]()
Ở đây chúng ta sử dụng nc để kết nối với
localhostthông qua port30000sau đó đưa vào password củabandit14máy chủ sẽ trả về cho ta password củabandit15.
nc hay netcat là một kết nối tới host từ xa thông qua giao thức TCP/UDP
Level 15:
https://overthewire.org/wargames/bandit/bandit16.html
Theo mình từ đây mức độ của các challenge sẽ bắt đầu ở mức medium.
ssh -p 2220 bandit15@bandit.labs.overthewire.orgChallenge này sẽ giúp ta biết một cách kết nối thay cho netcat là openssl
![]()
Cú pháp s_client sẽ tạo một cái nối từ xa tới host thông qua SSL/TLS với mục đích truyền dữ liệu. Cú pháp -connect sẽ kết nối tới host và port cần truy cập.
![]()
Sau khi đã kết nối, kéo đến dòng cuối ta sẽ thấy dòng chữ
Read R BLOCKta nhập đúng password tới server thì server sẽ trả về password mới cho chúng ta.
Level 16:
https://overthewire.org/wargames/bandit/bandit17.html
ssh -p 2220 bandit16@bandit.labs.overthewire.orgChallenge này giúp ta cách xem các port đang chạy trên một server và các service trên các port đó![]()
Sử dụng nmap để quét các port trên server ở đây ta sẽ quét từ dãy
31000-32000, -sV cho ta biết các service đang chạy trên các port đó. Ở đây ta thấy 2 service đang chạy ssl do đó ta sẽ sử dụng openssl. Ở port31518khi ta kết nối nếu truyền vào một giá trị nó sẽ trả về đúng giá trị đó, nguyên nhân là có lệnh echo lệnh này sẽ in những dòng ta echo ra màn hình.![]()
Ta sẽ kết nói với port
31790.
![]()
Sau khi nhập đúng password, 1 sshkey sẽ trả về như ở Level 13. Ta làm tương tự như Level 13 để lấy sshkey.
Level 17:
https://overthewire.org/wargames/bandit/bandit18.html
ssh -p 2220 bandit17@bandit.labs.overthewire.org -i ...Challenge này cho ta biết so sánh về kí tự giữa 2 file khác nhau
![]()
Một vấn đề mà mình gặp phải khi kết nối với bài này là server không nhận sshkey của mình do mình để đặc quyền file này
too open.
![]()
Vì thế mình phải sử dụng lệnh chmod để chỉnh sửa lại đặc quyền của file. Ở đây là
400là chỉreadbởiowner.
![]()
Sau khi vào được ta sẽ thấy 2 file. Sử dụng lệnh diff với cú pháp -normal output sẽ được xuất ra theo kiểu thông thường. Dòng trên là của file
passwords.newvà dòng dưới là của filepasswords.old
https://chmod-calculator.com/ một trang tính toán về đặc quyền trên Linux.
Level 18:
https://overthewire.org/wargames/bandit/bandit19.html
ssh -p 2220 bandit18@bandit.labs.overthewire.org ...Challenge này cho ta biết không cần phải truy cập trực tiếp vào host thông qua ssh mà có thể kết hợp với một lệnh khác![]()
Nếu chúng ta kết nối trực tiếp theo cách thông thường thì khi nhập xong password kết nối sẽ bị ngắt. Nguyên nhân là với file
.bashrcđoạn script sẽ được thực thì khi một người dùng đăng nhập. Ở đây là ngắt kết nối với host.
![]()
Thay vì dùng ssh để truy cập trực tiếp vào server ta có thể thông qua ssh để sử dụng lệnh cat để đọc file trên server mà không phải đăng nhập trực tiếp vào.
Level 19:
https://overthewire.org/wargames/bandit/bandit20.html
ssh -p 2220 bandit19@bandit.labs.overthewire.orgChallenge này cho ta thấy cách thực thi một file đặc nguyền là như thế nào
![]()
Khi ta gõ ./bandit20-do nó sẽ chạy như một câu lệnh xác định người dùng và hiển thị
run a command as another usernghĩa là nó chạy 1 câu lệnh như một người dùng khác.![]()
Sử dụng lệnh ls -la để kiểm tra đặc quyền của từng file hay folder. Ta thấy
bandit20-donằm ởgroup bandit19vàowner bandit20do đó lệnh có thể được thực thi ở user bandit19 nhưng file sẽ được chạy dưới quyền của bandit20.
![]()
Do ./bandidt20-do chạy như một người dùng nên ta có thể thêm lệnh vào để chạy ra password.
Level 20:
https://overthewire.org/wargames/bandit/bandit21.html
ssh -p 2220 bandit20@bandit.labs.overthewire.orgChallenge giúp ta cách tạo một port trên localhost
![]()
Đầu tiên ta sẽ lệnh ./suconnect lệnh này sẽ sẽ so sánh mật khẩu mà ta truyền vào ở trên port mà ta kết nối với mật khẩu ở Level 19. Nếu đúng sẽ trả về một password mới.
![]()
Ta sẽ cho input trên port là password của của Level 19, cú pháp /n sẽ không cho xuất hiện một dòng mới ở cuối output. Sử dụng | để thêm lệnh, -l port sẽ lắng nghe khi ta kết nói, -p port mà ta muốn tạo ra. Dấu & sẽ cho lệnh chạy ở phía background nghĩa là khi ta không chủ động tắt thì lệnh sẽ được chạy ngầm. Chạy một lệnh khác sẽ không ảnh hưởng đến lệnh đang chạy.
![]()
Sử dụng lệnh ./suconnect để kết nối với port mà ta đã tạo. Sau khi kiểm tra đúng sẽ trả về mật khẩu mới.
Last updated







































