---
# System prepended metadata

title: 'Challenge-3-OTW: Overthewire - Bandit'

---

# Challenge-3-OTW: Overthewire - Bandit

## Level 0 -> 1

**Pass:** `bandit0`

### Tóm tắt:
Mật khẩu của level tiếp theo nằm trong file `readme` trong thư mục gốc.

### Lệnh sử dụng:
```bash
ls
cat readme
```

---

## Level 1 -> 2

**Pass:** `ZjLjTmM6FvvyRnrb2rfNWOZOTa6ip5If`

### Tóm tắt:
Mật khẩu nằm trong file tên `-`.

### Lệnh sử dụng:
```bash
cat ./-
cat < -
```

---

## Level 2 -> 3

**Pass:** `263JGJPfgU6LtdEvgfWU1XP5yac29mFx`

### Tóm tắt:
Tìm mật khẩu trong một file có tên `spaces in this filename`.

### Lệnh sử dụng:
```bash
cat "spaces in this filename"
cat spaces\ in\ this\ filename
```

---

## Level 3 -> 4

**Pass:** `MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx`

### Tóm tắt:
Tìm mật khẩu trong một file ẩn nằm trong thư mục `inhere`.

### Lệnh sử dụng:
```bash
cd inhere
ls -la
cat .hidden
```

---

## Level 4 -> 5

**Pass:** `2WmrDFRmJIq3IPxneAaMGhap0pFhF3NJ`

### Tóm tắt:
Tìm mật khẩu trong một file nằm trong thư mục `inhere`, chỉ có một file có thể đọc được.

### Lệnh sử dụng:
```bash
file ./*
cat ./-file đúng định dạng-
```

---

## Level 5 -> 6

**Pass:** `4oQYVPkxZOOEOO5pTW81FB8j8lxXGUQw`

### Tóm tắt:
Tìm mật khẩu trong một file nằm trong thư mục `inhere`, file có kích thước 1033 bytes, không thực thi được.

### Lệnh sử dụng:
```bash
find . -type f ! -executable -size 1033c
cat ./-file tìm thấy-
```

---

## Level 6 -> 7

**Pass:** `HWasnPhtq9AVKe0dmk45nxy20cvUa6EG`

### Tóm tắt:
Tìm mật khẩu trong một file thuộc user `bandit7` và group `bandit6`, có kích thước 33 bytes.

### Lệnh sử dụng:
```bash
find / -type f -size 33c -user bandit7 -group bandit6 2>/dev/null
cat /-file tìm thấy-
```

---

## Level 7 -> 8

**Pass:** `morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj`

### Tóm tắt:
Tìm dòng chứa từ khóa `millionth` trong file `data.txt`.

### Lệnh sử dụng:
```bash
cat data.txt | grep millionth
```

---

## Level 8 -> 9

**Pass:** `dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc`

### Tóm tắt:
Tìm giá trị chỉ xuất hiện một lần trong file `data.txt`.

### Lệnh sử dụng:
```bash
cat data.txt | sort | uniq -u
```

---

## Level 9 -> 10

**Pass:** `4CKMh1JI91bUIZZPXDqGanal4xvAg0JM`

### Tóm tắt:
Tìm chuỗi có dạng `==` trong file `data.txt`.

### Lệnh sử dụng:
```bash
strings data.txt | grep ==
```

---

## Level 10 -> 11

**Pass:** `FGUW5ilLVJrxX9kMYMmlN4MgbpfMiqey`

### Tóm tắt:
Giải mã `base64` từ file `data.txt`.

### Lệnh sử dụng:
```bash
base64 -d data.txt
```

![Screenshot (72)](https://hackmd.io/_uploads/BJZJBhAK1e.png)

---

## Level 11 -> 12

**Pass:** `dtR173fZKb0RRsDFSGsg2RWnpNVj3qRr`

### Tóm tắt:
Giải mã mã hóa `ROT13` từ file `data.txt`.

### Lệnh sử dụng:
```bash
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
```

---

## Level 12 -> 13

**Pass:** `7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4`

### Tóm tắt:
File `data.txt` là file `hexdump` được nén nhiều lần. Giải nén để lấy mật khẩu.

### Lệnh sử dụng:
```bash
mktemp -d
cp data.txt /tmp/
xxd -r data.txt data1
file data1
gunzip data1.gz
bzip2 -d data1.bz2
tar -xvf data1
...
cat data8
```


## Level 13 -> 14

Mật khẩu nằm trong một file có quyền chỉ đọc bởi user `bandit14`. Cách tiếp cận:

1. Dùng SSH key có sẵn để truy cập vào user `bandit14`:
   ```sh
   ssh -i ssh.private bandit14@localhost
   ```
2. Đọc file chứa mật khẩu.

Mật khẩu tiếp theo: `FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn`

![image](https://hackmd.io/_uploads/B1uI_CTKke.png)

---

## Level 14 -> 15

Mật khẩu của level tiếp theo có thể nhận được bằng cách gửi mật khẩu hiện tại đến cổng `30000` trên `localhost`.

Dùng lệnh `nc` (Netcat):
```sh
nc localhost 30000
```
Sau đó nhập mật khẩu hiện tại.

Mật khẩu tiếp theo: `MU4VWeTyJk8ROof1qqmcBPaLh7lDCPvS`

![image](https://hackmd.io/_uploads/Bk933MRYye.png)

---

## Level 15 -> 16

Tương tự bài trước, nhưng lần này cần sử dụng **SSL/TLS** qua cổng `30001`.

Dùng OpenSSL:
```sh
openssl s_client -connect localhost:30001
```
Hoặc:
```sh
nc --ssl localhost 30001
```

Mật khẩu tiếp theo: `8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo`

![image](https://hackmd.io/_uploads/ryPEOmCY1e.png)

---

## Level 16 -> 17

Cổng chứa mật khẩu nằm trong khoảng `31000-32000`, chỉ có một cổng hợp lệ, các cổng còn lại chỉ phản hồi lại nội dung gửi vào.

**Các bước thực hiện:**
1. Dùng `nmap` để quét các cổng mở:
   ```sh
   nmap -p 31000-32000 localhost
   ```
2. Kiểm tra dịch vụ chạy trên từng cổng bằng:
   ```sh
   nmap -A -p 31000-32000 localhost
   ```
3. Xác định cổng có **SSL/TLS** (không phải echo).
4. Gửi mật khẩu hiện tại đến cổng đó bằng `netcat`.
5. Lưu SSH key được trả về vào file tạm, cấp quyền và sử dụng để SSH vào `bandit17`.

Mật khẩu tiếp theo: `kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx`

![image](https://hackmd.io/_uploads/Hyeqr4RFJe.png)

Sau khi quét, xác định cổng hợp lệ:

![image](https://hackmd.io/_uploads/HkhVGBCKJl.png)

![image](https://hackmd.io/_uploads/Bkh5MHAKJe.png)

Gửi mật khẩu và lưu SSH key:

```sh
openssl s_client -connect localhost:31790 -quiet
```

![image](https://hackmd.io/_uploads/BJZJBhAK1e.png)

Lưu SSH key và cấp quyền:
```sh
chmod 600 /tmp/bandit17_key
```

Đăng nhập:
```sh
ssh -i /tmp/bandit17_key bandit17@localhost
```

![image](https://hackmd.io/_uploads/ryIb5hAtye.png)

![image](https://hackmd.io/_uploads/rJlQqnCYyg.png)



## level 17->18 ![image](https://hackmd.io/_uploads/ByxEt3Atyg.png)
bài cho ta biết mật khẩu nằm trong passwords.new là dòng khác biệt duy nhất giữa 2 file password old và new level này còn có 1 note rằng nếu mình vào bandit 18 và được trả về byebye thì nó liên quan đến bandit19
![Screenshot (75)](https://hackmd.io/_uploads/SJIho3AKyx.png)
sau khi tìm hiểu và tham khảo thì em biết được lệnh diff sẽ cho ta biết rằng dòng thứ mấy khác dòng thứ mấy và cho ta thấy 
## Level 18 → 19
**Password:** `x2gLTTjFwMOhQ8oWNbMN362QKxfRqGlO`

![image](https://hackmd.io/_uploads/BJ10ya0K1l.png)

Bài cho biết pass của level tiếp theo nằm trong homedir nhưng file `.bashrc` đã bị sửa để tự động đăng xuất khi SSH vào.

- Giải pháp: Sử dụng `bash --noprofile` để tránh chạy `.bashrc`.

![Screenshot (78)](https://hackmd.io/_uploads/Syng4pRYJg.png)

---

## Level 19 → 20
**Password:** `cGWpMaKXVwDUNgPAVJbWYuGHVn9zl3j8`

![image](https://hackmd.io/_uploads/SJEi4T0YJe.png)

Bài cho biết pass được lưu trong `/etc/bandit_pass`, nhưng cần sử dụng file nhị phân `bandit20-do` với quyền setuid để đọc file đó.

- Kiểm tra quyền:

![Screenshot (82)](https://hackmd.io/_uploads/Byc4E00Fkl.png)

- Sử dụng file `bandit20-do` để đọc mật khẩu:

![Screenshot (83)](https://hackmd.io/_uploads/HkVLHCRFkg.png)

---

## Level 20 → 21
**Password:** `0qXahG8ZjOVMN9Ghs7iOWsCfZyXOUbYO`

![image](https://hackmd.io/_uploads/H1RcBARY1e.png)

Bài cung cấp một tệp setuid mở cổng mạng và trả về mật khẩu khi nhập đúng password của level hiện tại.

- Dùng `nc` để lắng nghe kết nối:
  ```bash
  nc -nlvp <port>
  ```

- Mở một terminal khác để kết nối đến cổng đó:

![Screenshot (92)](https://hackmd.io/_uploads/SyXnh00Fkg.png)

- Nhập pass hiện tại vào cổng lắng nghe:

![Screenshot (88)](https://hackmd.io/_uploads/S1HYsCCKye.png)

- Kết quả trên cổng kết nối:

![Screenshot (89)](https://hackmd.io/_uploads/rys5o00F1x.png)




## Level 21 → 22  
**Password:** `EeoULMCra2q0dSkYj561DX7s1CpBuOBt`

Bài yêu cầu kiểm tra chương trình tự động thực thi từ file `cron`. Để xem các câu lệnh nào đang chạy, truy cập thư mục `/etc/cron.d/`.

![Cron Jobs](https://hackmd.io/_uploads/SkjURR0YJx.png)

Sau khi kiểm tra, ta phát hiện mật khẩu nằm trong file `bandit22`, và nó đã cấp quyền để tự động đẩy vào một file tạm thời.

![Finding Password](https://hackmd.io/_uploads/ryquNy19yg.png)

Đọc file tạm thời để lấy mật khẩu:

![Reading Password](https://hackmd.io/_uploads/BkHeByy5yl.png)

---

## Level 22 → 23  
**Password:** `tRae0UfB9v0UzbCdn9cY0gQnds9GF58Q`

![Level 22](https://hackmd.io/_uploads/ryLUB11qye.png)

Bài này tương tự Level trước, nhưng có thêm ghi chú: *"Xem các tập lệnh shell do người khác viết là một kỹ năng rất hữu ích."*

Sau khi phân tích script, ta nhận thấy nó sử dụng MD5 để hash chuỗi:

![MD5 Hash](https://hackmd.io/_uploads/ByxbO115yx.png)

- `whoami` trả về `bandit22`.
- `md5sum` băm giá trị đó thành chuỗi 32 ký tự.
- `cut -d ' ' -f 1` lấy phần băm MD5.

Ta cần nhập `I am user bandit23` để nhận mật khẩu:

![Getting Password](https://hackmd.io/_uploads/B12ejzk5yx.png)

---

## Level 23 → 24  
**Password:** `0Zf11ioIjMVN551jX3CmStKLYqjk54Ga`

![Level 23](https://hackmd.io/_uploads/r1tLTWy5yg.png)

Tương tự bài trước, ta kiểm tra `/etc/cron.d/`, phát hiện một script sử dụng biến `$myname` để xác định owner:

![Script Analysis](https://hackmd.io/_uploads/H1MIkEJ5yx.png)

Ta tạo một file bash để copy mật khẩu:

```bash
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/passbandit24
```

Sau đó, đổi tên file thành `.sh`, copy vào thư mục `/var/spool/bandit24/foo/` (hãy chờ 1 lúc để script chạy):

![Executing Script](https://hackmd.io/_uploads/H1BA_vJ5yx.png)

Đọc file `/tmp/passbandit24` để lấy mật khẩu:

![Reading Password](https://hackmd.io/_uploads/Skteovk5kx.png)

---

## Level 24 → 25  
**Password:** `gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8`

![Level 24](https://hackmd.io/_uploads/S1_r3vkcJl.png)

Bài này có một *daemon* lắng nghe tại cổng `30002`. Ta cần nhập mật khẩu `bandit24` và 4 số mã PIN.

![Connecting to Port](https://hackmd.io/_uploads/S1znkdy5Je.png)

Viết script thử 10,000 mã PIN:

```bash
#!/bin/bash
for i in {0000..9999}; do
  echo "gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i" >> /tmp/try.txt
done
```

Chạy script, sau đó dùng `nc` để gửi dữ liệu:

```bash
cat /tmp/try.txt | nc localhost 30002
```

![Brute Force](https://hackmd.io/_uploads/r1HjiOy5kx.png)

---

## Level 25 → 26  
**Password:** `iCi86ttT4KSNe1armKiwbQNmB3YJP3q4`

![Level 25](https://hackmd.io/_uploads/B1VcyY1cJg.png)

Bài yêu cầu tìm cách đăng nhập bằng khóa RSA:

![RSA Key](https://hackmd.io/_uploads/B1xwNt1ckx.png)

Sau khi đăng nhập, ta bị *logout* ngay lập tức do file `/usr/bin/showtext`.

Phân tích file:

![Showtext Analysis](https://hackmd.io/_uploads/ry9z9Yk91g.png)

Ta can thiệp bằng cách thu nhỏ terminal để chặn lệnh `more`, sau đó mở trình chỉnh sửa bằng cách nhập `v`, rồi chạy:

```bash
:set shell=/bin/bash
:sh
```

![Exploiting More](https://hackmd.io/_uploads/B1Mck51q1g.png)

Lấy mật khẩu từ `/etc/bandit_pass/bandit26`:

![Reading Password](https://hackmd.io/_uploads/rJfI451ckx.png)

---
## Level 26 → 27
**Password:** `s0773xxkk0MXfdqOfPRVr9L3jJBUOgCZ`

![image](https://hackmd.io/_uploads/SkDVS5J9Je.png)

Sau khi vào Bandit26, bài yêu cầu lấy mật khẩu của level 27 từ file `bandit27-do`.

![Screenshot (124)](https://hackmd.io/_uploads/HJP6d9yqyg.png)

---

## Level 27 → 28
**Password:** `upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB`

![image](https://hackmd.io/_uploads/S14St91cyg.png)

Bài cung cấp một repo Git tại `ssh://bandit27-git@localhost/home/bandit27-git/repo` (cổng 2220). Password của `bandit27-git` giống với `bandit27`.

- Clone repo:
  ```bash
  git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo
  ```
- Tìm file chứa mật khẩu:

![Screenshot (128)](https://hackmd.io/_uploads/rypAys1cJe.png)

---

## Level 28 → 29
**Password:** `Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN`

![image](https://hackmd.io/_uploads/HkM7xiy5yg.png)

- Xem lịch sử commit bằng `git log`:

![Screenshot (132)](https://hackmd.io/_uploads/rJksEjJ51l.png)

- Checkout commit chứa pass:
  ```bash
  git checkout <mã commit>
  ```

![Screenshot (133)](https://hackmd.io/_uploads/H1kk8iyq1l.png)

---

## Level 29 → 30
**Password:** `4pT1t5DENaYuqnqvadYs1oE4QLCdjmJ7`

![image](https://hackmd.io/_uploads/r1Qj8jJq1l.png)

- Kiểm tra nhánh (branch) bằng `git branch -a`:

![Screenshot (135)](https://hackmd.io/_uploads/B1gm9s191e.png)

- Chuyển sang nhánh đúng:
  ```bash
  git checkout <tên nhánh>
  ```

![Screenshot (136)](https://hackmd.io/_uploads/r1iQci19ye.png)

---

## Level 30 → 31
**Password:** `qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL`

![image](https://hackmd.io/_uploads/HJ5D9j1c1e.png)

- Kiểm tra tag bằng `git tag`:

![image](https://hackmd.io/_uploads/rJeeRj1c1e.png)

- Hiển thị nội dung tag:
  ```bash
  git show <tên tag>
  ```

---

## Level 31 → 32
**Password:** `fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy`

![image](https://hackmd.io/_uploads/ByFNCi19yx.png)

- Tạo file với nội dung đúng:

![Screenshot (142)](https://hackmd.io/_uploads/SyTIx3kckl.png)

- Đẩy lên repo:
  ```bash
  git add -f <file>
  git commit -m "Added required file"
  git push origin master
  ```

![Screenshot (144)](https://hackmd.io/_uploads/B1mEa7lc1l.png)
![Screenshot (143)](https://hackmd.io/_uploads/BkwHaXe9ke.png)

---

## Level 32 → 33
**Password:** `3O9RfhqyAlVBEZpVb6LYStshZoqoSx5K`

![image](https://hackmd.io/_uploads/H1gmkIx91x.png)

Khi vào shell, các lệnh bị in hoa và bị từ chối. Giải pháp:

- Nhập `$0` để thoát shell:

![Screenshot (148)](https://hackmd.io/_uploads/r1cNdDe51g.png)

- Kiểm tra user bằng `id` hoặc `whoami`:

![Screenshot (150)](https://hackmd.io/_uploads/HyjLuPl9Je.png)

---

## Level 33 → 34
**Password:** `tQdtbs5D5i2vJwkO8mEyYEyTL8izoeJ0`

![image](https://hackmd.io/_uploads/rJH5uvx5yl.png)

![Screenshot 2025-02-17 144859](https://hackmd.io/_uploads/BkI4nwgcyg.png)















































 






























	
	


		
 






