---
# System prepended metadata

title: The Half Cookie
tags: [CTF, cookie arena]

---

# eViewer
![image](https://hackmd.io/_uploads/HyoPZAJgJx.png)

## Phân tích
Chall này cho phép đọc cái file, các file tồn tại được list ở dưới
![image](https://hackmd.io/_uploads/SkKjmC1x1l.png)

Thử đọc các file
![image](https://hackmd.io/_uploads/BylW4Aygke.png)

Tuy nhiên đến file `index.php` thì không có quyền truy cập
![image](https://hackmd.io/_uploads/HkEGERkxkg.png)

Thử path traversal, ở đây mình đã đọc được file `/etc/passwd`
![image](https://hackmd.io/_uploads/B1HwNC1g1e.png)

## Khai thác
Đọc được `/flag.txt` ngay rùi
![image](https://hackmd.io/_uploads/BkZgHA1x1l.png)

**Flag:** `CHH{P4thf1nd3r_c2950b5b7b9bacc956bd15a64e063ee5}`

# Cookie Comic
![image](https://hackmd.io/_uploads/BJbUB01ekl.png)

## Phân tích
Web này dùng để xem ảnh như 1 album
![image](https://hackmd.io/_uploads/ByPV8Ayl1x.png)

Click vào xem thì thấy link ảnh được truyền vào từ url
![image](https://hackmd.io/_uploads/rkM3URygkx.png)

Vậy đọc `/etc/passwd` ở đây xem sao, đọc thành công chứng tỏ web bị path traversal
![image](https://hackmd.io/_uploads/S1e-PC1lJl.png)

## Khai thác
Cuối cùng là lấy flag 
**Flag:** `CHH{C00k13C0m1c_c7087fe6a5e365f200ee2a6266801e7b}`
# COMB
![image](https://hackmd.io/_uploads/BJdaDA1lyl.png)

## Phân tích
Web này hiển thị thông tin CV của người dùng tên là John Doe, để lấy được flag thì phải login vào tài khoản của người này
![image](https://hackmd.io/_uploads/SJYnYA1lJl.png)

Dùng dirsearch tìm các dir
![image](https://hackmd.io/_uploads/HkACKAkxJx.png)

File `robots.txt` cho mình biết thêm thông tin về file `comb.php`
![image](https://hackmd.io/_uploads/B16kc0Jgkl.png)

Vì `robots.txt` chỉ có tác dụng đối với Search Engine của trình duyệt, còn mình là người mà :))))), vậy nên ta sẽ đọc được file này

Password được leak, nhập email vào để tìm thui
![image](https://hackmd.io/_uploads/B1gPqAkxyx.png)

Có nhiều kết quả được trả về, đối chiếu với mail của John và ta có password là `football24`
![image](https://hackmd.io/_uploads/HJIn5C1eJl.png)

## Khai thác
Login vào để lấy flag thôi
![image](https://hackmd.io/_uploads/rygMsRJlJl.png)

**Flag:** `CHH{C0MBL34kD47a_ccd963d7b20c0247c23abea0cfad452a}`

# Pin Rate Limit
![image](https://hackmd.io/_uploads/SyVui0Jx1x.png)

## Phân tích
Chall này yêu cầu nhập mã Pin để login
![image](https://hackmd.io/_uploads/ryes2Cyg1e.png)

Chỉ được login tối đa 5 lần, nếu quá 5 lần thì tài khoản sẽ bị khóa
![image](https://hackmd.io/_uploads/H1e6h0yxye.png)

Source
```php
if (!isset($_SESSION['attempts'][$user_ip])) {
    $_SESSION['attempts'][$user_ip] = 0;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $user_pin = $_POST['pin'] ?? '';
    if ($_SESSION['attempts'][$user_ip] >= $max_attempts) {
        header('HTTP/1.1 403 Forbidden');
        echo "You've reached the limit of request you can send to us";
        exit;
    }
    if ($user_pin) {
        $stored_pin = trim(file_get_contents($secure_file));
        if ($user_pin === $stored_pin) {
            $message = file_get_contents("/flag.txt");
        } else {
            $_SESSION['attempts'][$user_ip]++;
            $message = "Incorrect PIN. Attempts remaining: " . ($max_attempts - $_SESSION['attempts'][$user_ip]);
        }
    } else {
      $message = "Please enter a PIN.";
    }
}
```

Ở đây, dựa vào biến `$_SESSION['attempts'][$user_ip]` để đếm số lần login, vậy chỉ cần xóa cookie đi là có thể bruteforce mà không lo bị khóa acc. Còn một cách khác là dùng `X-Forwarded-For: [ip]`.

## Khai thác
Dùng intruder của Burp để brute force
![image](https://hackmd.io/_uploads/r1cCCAyx1x.png)

Lấy flag và submit
![image](https://hackmd.io/_uploads/ryQKJ1eg1e.png)

**Flag:** `CHH{P1nRa7e1m1t_744bd40cbd620e858f964b2c0dce32ad}`

# My Deploy
![image](https://hackmd.io/_uploads/rySUgkeeJl.png)

## Phân tích
![image](https://hackmd.io/_uploads/rJRogJeg1l.png)

Web này có các chức năng upload file zip, sau đó giải nén zip
![image](https://hackmd.io/_uploads/ryhUbyegyg.png)
![image](https://hackmd.io/_uploads/HJ8vZJeg1e.png)
![image](https://hackmd.io/_uploads/HJRdZ1xgkl.png)

Thử upload file php xem sao
![image](https://hackmd.io/_uploads/rkSzfJxgJg.png)
![image](https://hackmd.io/_uploads/HypGGyexJe.png)
Vậy web không thực hiện bất cứ filter nào

## Khai thác
```php
<?php
    system("cat /flag*");
?>
```
![image](https://hackmd.io/_uploads/rkNif1xgyx.png)

**Flag:** `CHH{N1yD31510y_e530130e4219392abc657b00c9d36fef}`

# NSLookup
![image](https://hackmd.io/_uploads/rkNg71egyl.png)

## Phân tích
Web này thực hiện phân giải tên miền, nhập vào domain và nhận được kết quả như hình
![image](https://hackmd.io/_uploads/Syb_7yxgJg.png)

Ở đây dùng nslookup để phân giải, liên quan đến các hàm thực thi lệnh hệ thống. Vì vậy ta sẽ thử OS command injection
![image](https://hackmd.io/_uploads/rJpgS1egJl.png)

## Khai thác
Đọc file flag thui. Nhưng mà, các lệnh đọc file như `ls, cat, head, tail, less`, kí tự `*` đều bị filter
![image](https://hackmd.io/_uploads/B1osvylxkl.png)

Vậy thì dùng `dir`
![image](https://hackmd.io/_uploads/ryugd1elke.png)

Ròi, lấy flag thui
![image](https://hackmd.io/_uploads/Skpfu1xg1g.png)

**Flag:** `CHH{N5l00kupM00r3_ad90f2108249601a41f7a3e5e96e2abf}`

# Repay Bank
![image](https://hackmd.io/_uploads/SktiOJxg1e.png)

## Phân tích
Chall này cần login thành công để lấy được flag
![image](https://hackmd.io/_uploads/SJOMY1xeJl.png)

Ở phần `Blogs` của web có thông tin về mật khẩu của người dùng. Mỗi user sẽ được cấp mật khẩu mặc định là `Repay@2024`, username có dạng `[chữ cái đầu của họ].[tên]`
![image](https://hackmd.io/_uploads/rkIVtkxxye.png)

Ở phần `About us` có thông tin về các thành viên của bank này
![image](https://hackmd.io/_uploads/rJfBcyglyg.png)

Từ đây, mình có danh sách username
```text
s.fergus
c.shaun 
d.sophie
b.hugo
k.steven
```
Có thể thử bruteforce theo mật khẩu mặc định.

## Khai thác
![image](https://hackmd.io/_uploads/SJQWj1geye.png)

**Flag:** `CHH{R3payB4nk_393d275a0e06cd299e57efe085fe4912}`

# System Monitor
![image](https://hackmd.io/_uploads/Hy81Jlxg1l.png)

## Phân tích
Vừa vào đã bắt đăng nhập rồi.
![image](https://hackmd.io/_uploads/By1z2kggJe.png)

 Vì bài tên System Monitor có vẻ liên quan đến tài khoản `admin:admin`. Đem đi thử thì truy cập được 
 ![image](https://hackmd.io/_uploads/BkfwhygxJx.png)

Nó cho xem các file log, các package cập nhật
![image](https://hackmd.io/_uploads/Hy_K2kel1x.png)
![image](https://hackmd.io/_uploads/SkUqh1elyl.png)

Ban đầu mình nghĩ là đọc file thì sẽ dính path traversal, cơ mà thử khai thác mãi không thu được gì.

Khi hết giải mình nhận ra là đọc file cũng có thể dùng các lệnh. Test ngay
![image](https://hackmd.io/_uploads/rJeW0yeekg.png)

Ở burp collab có nhận được HTTP request, chứng tỏ có thể inject os command 
![image](https://hackmd.io/_uploads/ByJGRyxeye.png)

## Khai thác
![image](https://hackmd.io/_uploads/HkR001eg1e.png)

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

**Flag:** `CHH{Sy5t3mM0n17or_6e2df7d32ffe2b24598b0263cba6a3ed}`

# Curriculum vitae
![image](https://hackmd.io/_uploads/BJuQylgxye.png)

## Phân tích
Vẫn là cv của John Doe, và chúng ta phải đăng nhập thành công của tài khoản của ông này
![image](https://hackmd.io/_uploads/BksIleel1g.png)

Lúc này, `robots.txt` không cung cấp được thông tin gì hữu ích lắm, chỉ là 1 file hello
![image](https://hackmd.io/_uploads/ryIcgllxJx.png)

Xem source thì mình có được hint về tool CUPP, tool này sẽ dựa vào những thông tin ta cung cấp để tạo ra bộ mật khẩu từ những thông tin đó.
![image](https://hackmd.io/_uploads/H1TOMeel1x.png)

## Khai thác
![image](https://hackmd.io/_uploads/HkMCMeglJg.png)

Với mật khẩu `Doejohn9007` thì login thành công
![image](https://hackmd.io/_uploads/Bywg7llgJl.png)

Ở đây cho phép update thông tin cv ở dạng json
![image](https://hackmd.io/_uploads/B1V8Xggekg.png)

Thử update ở file `test.php` ban đầu thành công
![image](https://hackmd.io/_uploads/BJEuUxgg1x.png)

Và tạo 1 web shell để đọc flag
![image](https://hackmd.io/_uploads/BJJVOgeg1e.png)
![image](https://hackmd.io/_uploads/BJeBuelxke.png)

**Flag:** `CHH{Curr1culu111vit4e_580b65c1fed4045496db362d04e18b2f}`

# My Blog
![image](https://hackmd.io/_uploads/HkJEomxlkl.png)

## Phân tích
![image](https://hackmd.io/_uploads/SkOTtgllkg.png)

Site này chỉ cho phép localhost truy cập các link
![image](https://hackmd.io/_uploads/rJyu9elxJe.png)

Bypass bằng `X-Forwarded-For`
![image](https://hackmd.io/_uploads/rJIscexgkg.png)

Tiếp tục click vào các link để xem có gì không, web yêu cầu login nên đương nhiên phải có tài khoản mật khẩu
![image](https://hackmd.io/_uploads/HyLujelekl.png)

Và chúng ta có hint cũng không giống hint lắm :(((. Vậy phải tiếp tục recon thôi
![image](https://hackmd.io/_uploads/HkfYnglxJg.png)

Dùng dirsearch để tìm các folder và file ẩn
```cmd
dirsearch -u http://103.97.125.56:30414/ -e "*" --header "X-Forwarded-For: 127.0.0.1"
```
Vì chạy dirsearch quá lâu và toàn sập, nên mình sẽ quét bằng Burpsuite, lấy wordlist ở `dirsearch/db/dicc.txt`
![image](https://hackmd.io/_uploads/ryoRRlegJl.png)

Sau khi chờ đợi mòn mỏi, thu được file backup.sql có giá trị
![image](https://hackmd.io/_uploads/rJJPkMxgyx.png)
![image](https://hackmd.io/_uploads/Hkca1Mee1e.png)

Đi tìm password của admin
![image](https://hackmd.io/_uploads/SkQxZGllJx.png)
Password được mã hóa ở dạng Bcrypt. Dùng hashcat để crack
```cmd
hashcat -a 0 -m 3200 hashes.txt /usr/share/wordlists/rockyou.txt -w 3 -O

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

Vậy tìm được pass của admin là `princess`. Đem đi login sẽ được chuyển đến giao diện Textpattern
![image](https://hackmd.io/_uploads/HyVlUGeekg.png)
![image](https://hackmd.io/_uploads/rJyzUMllkl.png)

Ở chức năng upload file, file php vẫn upload thành công. Vậy là có thể rce
![image](https://hackmd.io/_uploads/BJTEFmxxyx.png)
![image](https://hackmd.io/_uploads/rJEg5Qxlkx.png)


## Khai thác
Upload webshell và có được flag
![image](https://hackmd.io/_uploads/ry7EcQegJe.png)

**Flag:** `CHH{Bl0gT3xtP4tt3rn_ecf2bd4b48d36dab42c7868e3543649b}`




