Skip to content
· 2 min read

A Massive Problem

CTF Write-up

Quick Nav
CTF@CIT 2026 Hidden

A Massive Problem

Challenge Information

  • Category: Web Exploitation
  • Event: CTF@CIT 2026
  • Author: 10splayaSec
  • Difficulty: Hidden
  • Tags: #web #mass_assignment

1. Description

Improper Authorization has been fixed! I think we are ready for production!

2. Overview

Một bài mở đầu đơn giản

3. Source Code Analysis

Mình sẽ giải nghiệm giao diện web trước, ngay trang đầu tiên là một form login / register trông khá đẹp mắt:

Vì mình cũng khá lười nên mình sẽ đọc source code luôn để hiểu rõ hơn về các chức năng =)), cấu trúc mục chỉ gồm một file python chính:

Bài này thì FLAG nằm ở trang /admin:

-> Hướng đi mình nghĩ ngay đến là sẽ là tìm cách leo quyền admin.

Kiểm tra file app.py thì dễ dàng nhận ra ở endpoint /api/register dính một lỗi khá nguy hiểm:

Ở đây mặc dù dev đã cẩn thận khi hardcode luôn phần rolestandard nhưng lại sử dụng hàm update() để tiếp tục update recode.

Khi ta dùng hàm update() với một dictionary (incoming) lấy trực tiếp từ request, cũng có nghĩa là ta đang cho phép user ghi đè lên bất kỳ key nào có trong object record.

-> Nếu gửi một request dạng json chứa trường "role" = "admin" vào thì hàm update() sẽ ghi đè trực tiếp lên trường role cũ luôn. Chỉ cần gửi request chuẩn là xong bài rồi =)).

4. Exploitation

Sử dụng Burp Suite để lấy request sau đó thêm trường role là xong (password nhớ đúng format):

-> Đến đây thì mình đã đăng ký thành công account với role admin, thử đăng nhập xem sao:

Đã có quyền admin, vào và lấy flag thôi hẹ hẹ

h@ppy h@ck!n9 (BKSEC)

$ ls ./related/