0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Giải Thích Chi Tiết về Web Challenges trong Giải CTF 24@CTF

Đăng vào 3 tuần trước

• 3 phút đọc

Chủ đề:

CTFWrite Up

Giới Thiệu

Tuần vừa rồi, mình đã tham gia vào giải CTF mang tên 24@CTF, và mình cảm thấy đây là một cuộc thi rất thú vị, phù hợp với những bạn đã có một chút kiến thức về các lỗ hổng bảo mật. Trong bài viết này, mình sẽ chia sẻ các bài viết hướng dẫn (write-ups) chi tiết về các thử thách web trong giải này. Ngoài ra, mình cũng cung cấp link docker để các bạn có thể tự build và thực hành.

Thử Thách 1: Bookworm

Khi truy cập vào link của challenge này, bạn sẽ thấy chỉ có một chức năng duy nhất là tìm kiếm sách. Điều này khiến mình nghĩ ngay đến khả năng thử nghiệm với payload SQL injection. Mình đã thành công khi thực hiện câu lệnh SQL sau để tiết lộ tên bảng:

Copy
1' UNION ALL SELECT NULL,concat(TABLE_NAME) FROM information_schema.TABLES -- 

Kết quả cho thấy có hai bảng: Admin và Books, nhưng mình quyết định chỉ tập trung vào bảng Admin. Tiếp theo, mình đã kiểm tra số lượng và tên các cột trong bảng này bằng câu lệnh:

Copy
1' UNION ALL SELECT NULL,concat(column_name) FROM information_schema.COLUMNS WHERE TABLE_NAME='Admin'--

Kết quả trả về bao gồm 3 cột: id, password, username. Sau đó, mình thử truy vấn ra dữ liệu trong bảng Admin và nhận được flag cùng với username và password.

Copy
1'+UNION+ALL+SELECT+username,password+FROM+Admin+--+

Thử Thách 2: Bookworm 2

Sau khi đã có thông tin đăng nhập, mình quay lại trang upload.php để thử nghiệm tải lên file. Mình đã thử đăng nhập bằng username và password vừa tìm thấy. Sau khi đăng nhập thành công, mình đã thử tải lên một file ảnh và đổi đuôi thành .phtml để thực hiện Remote Code Execution (RCE). File tải lên thành công đã cho phép mình chạy mã độc trên server và tìm flag.

Thử Thách 3: Paul_Dirty_Secret

Khi vào giao diện của challenge này, tất cả các tính năng đều không sử dụng được. Mình đã tiến hành scan các thư mục bằng dirsearch và tìm thấy đường dẫn đến /notes chứa ba file avec tên fichier.txt. Tuy nhiên, nội dung chúng không quan trọng, và mình tiếp tục điều tra.

Khi thử nghiệm SQL injection trên trang đăng nhập, với việc sử dụng ORDER BY, mình đã xác nhận được ứng dụng này chỉ có một cột. Bằng cách gửi payload SQL, mình đã bypass authentication thành công và truy cập vào trang admin.

Tại đây, mình đã phát hiện ra rằng server có thể đọc nội dung của file thông qua việc gửi tham số filename. Do đó, mình đã tiêm thêm payload để đọc file index.php và lấy được một flag quan trọng.

Thử Thách 4: Paul_Dirty_Secret_2

Flag từ bài trước là gợi ý để tìm kiếm tiếp. Nhờ lỗi đọc file mà mình đã có thể truy cập vào file cấu hình và nhận ra rằng có một host thứ hai là secret-barbapapa-addicts.ctf. Mình đã thêm host này vào file hosts và tiếp tục khai thác để tìm ra flag bí mật khác bằng cách khai thác điểm yếu trong mã nguồn.

Cuối cùng, khi kiểm tra mã nguồn, mình đã phát hiện ra một lỗi loại so sánh không chính xác, cho phép mình cung cấp password thành công và nhận được flag cuối cùng.

Trong toàn bộ quá trình này, mình đã chứng kiến rất nhiều thủ thuật và kỹ thuật trong việc khai thác web. Hy vọng rằng bài viết này giúp các bạn có cái nhìn rõ hơn về cách thức hoạt động của các lỗ hổng bảo mật và cách khai thác chúng thành công.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào