Recon
Giao diện trang web
image
Trừ Hall of Fame /hof thì tất cả link khác đều redirect đến /error
image
Frontend trang web sử dụng NextJS v14.1.0
image
Phuc RiO changed a year agoView mode Like Bookmark
1. Tổng quan
Mô tả: Trong Linux kernel, có một lỗ hổng gọi là "use-after-free" trong thành phần netfilter: nf_tables có thể bị tấn công để leo thang đặc quyền cục bộ. Hàm nft_verdict_init() cho phép các giá trị dương được coi là lỗi loại bỏ (drop error) trong verdict hook, do đó hàm nf_hook_slow() lấy kết quả từ hàm nft_verdict_init() có thể gây ra một lỗ hổng double free. Attacker sẽ dùng một network request đặc biệt. Request không đúng định dạng này đánh lừa kernel giải phóng nhầm một đoạn bộ nhớ quan trọng khi cho rằng request đó được xử lý bình thường. Sau đó attacker có thể khai thác lỗi bộ nhớ này để chèn và thực thi các lệnh đặc quyền.
CVSS: 7.8
Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Phiên bản ảnh hưởng:
image
Lỗi cơ bản là lỗi xử lý đầu vào của các kết quả của netfilter verdicts. Do đó, yêu cầu để khai thác là nf_tables được bật và user namespace không có đặc quyền được bật. Việc khai thác chỉ diễn ra trên dữ liệu và thực hiện một cuộc tấn công kernel-space mirroring attack (KSMA) từ phân vùng người dùng bằng kỹ thuật Dirty Pagedirectory (pagetable confusion), nó có thể liên kết bất kỳ địa chỉ vật lý nào (cùng quyền của nó) với các địa chỉ bộ nhớ ảo bằng cách thực hiện đọc/ghi vào địa chỉ người dùng.
Workflow
Để kích hoạt lỗi dẫn đến double-free, thêm một quy tắc Netfilter vào user namespace không có đặc quyền. Quy tắc Netfilter chứa một biểu thức có giá trị verdict độc hại, làm cho mã kernel nf_tables nội bộ xử lý NF_DROP trước tiên, sau đó giải phóng skb, và sau đó trả về NF_ACCEPT để quá trình xử lý gói tiếp tục và nó sẽ giải phóng skb hai lần. Sau đó, kích hoạt quy tắc này bằng cách cấp phát một packet IP 16-page(để nó được cấp phát bởi buddy-allocator và không phải là PCP-allocator hoặc slab-allocator), và packet này có migratetype 0.
Phuc RiO changed a year agoView mode Like 1 Bookmark
Truy cập trang web thấy tham số url cho phép người dùng nhập vào 1 URL
image
Sau khi phân tích source code và các file cấu hình, thu thập được một số thông tin quan trọng:
Flag được lưu ở biến môi trường của website
image
Ứng dụng web chạy trên port 1337
image
Route /environment sẽ hiện thị tất cả các các biến môi trường.
Phuc RiO changed a year agoView mode Like Bookmark
Thử thách bắt đầu với một trang web hiển thị các tệp mẫu (.tpl) cục bộ và từ xa.
image
Check mã nguồn go, có một số vectơ tấn công cho SSRF và path traversal nhưng không có gì có thể khai thác. Mã này dường như thực thi mã từ các mẫu từ xa.
if remote == "true" {
tmplFile, err = readRemoteFile(page)
if err != nil {
Phuc RiO changed a year agoView mode Like Bookmark
Config IP
Restart -> Bấm F2 để mở bảng -> Advance Options
image
Bấm E để sửa
image
Sửa "ro recover nomodeset" -> "rw init=/bin/bash"
Sau đó Ctrl + X
image
Phuc RiO changed 2 years agoView mode Like 1 Bookmark
Bước 1: Dò quét
Tìm Ip của VM knock knock
netdiscover -i eth0 -r 192.168.18.0/24
image
image
knock knock có IP là 192.168.18.143
Dùng nmap scan version và OS
nmap -sT -sV -O 192.168.18.143
image
Phuc RiO changed 2 years agoView mode Like Bookmark
Crypto
Multi-Numeral
Challenge given a binary string
0011010100110011001000000011010100110011001000000011001100110010001000000011010100110010001000000011010100110011001000000011001100110010001000000011010100110010001000000011011000111001001000000011001100110010001000000011010100110011001000000011010100110011001000000011001100110010001000000011010100110011001000000011010100110000001000000011001100110010001000000011010100110100001000000011011000111001001000000011001100110010001000000011010100110101001000000011010100110010001000000011001100110010001000000011010100110001001000000011010100110001001000000011001100110010001000000011010100110010001000000011011000111000001000000011001100110010001000000011010100110010001000000011010100110110001000000011001100110010001000000011010100110100001000000011010100110010001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110100001000000011010100110001001000000011001100110010001000000011010100110101001000000011011000110101001000000011001100110010001000000011010100110010001000000011010100110000001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110100001000000011010100110000001000000011001100110010001000000011010100110011001000000011010100110010001000000011001100110010001000000011010100110011001000000011010100110000001000000011001100110010001000000011010100110101001000000011010100110011001000000011001100110010001000000011010100110100001000000011010100110011001000000011001100110010001000000011010100110011001000000011010100110100001000000011001100110010001000000011010100110001001000000011010100110111001000000011001100110010001000000011010100110101001000000011010100110011001000000011001100110010001000000011010100110100001000000011010100110010001000000011001100110010001000000011010100110011001000000011010100110101001000000011001100110010001000000011010100110001001000000011010000111001001000000011001100110010001000000011010100110100001000000011010100110111001000000011001100110010001000000011010100110011001000000011011000110101001000000011001100110010001000000011010100110011001000000011010100110110001000000011001100110010001000000011010100110010001000000011010100110111001000000011001100110010001000000011010100110001001000000011010000111001001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110011001000000011010000111001001000000011001100110010001000000011010100110001001000000011011000111000001000000011001100110010001000000011010100110001001000000011011000111000
solve by CyberChef
Flag: PCTF{w0w_s0_m4ny_number5}
My phone
Phuc RiO changed 2 years agoView mode Like Bookmark
Checker
Challenge cho 2 file main.lua và checker.lua
main.lua
local util = require "checker"
-- local util = require("checker")
io.write("Input flag: ")
local flag = io.read("*l")
if util.check(flag, "BKctf2023") then
Phuc RiO changed 2 years agoView mode Like Bookmark
Crypto
Broken_Base64
Challenge cho đoạn ciphertext lbGxtYXRlc3tZMHVfaDRWM183MF91TmQzcjV0NG5EX0gwd19CNDUzNjRfdzBSazV9 ở dạng base64 nhưng bị thiếu
Vì format flag là shellmates{...} khi encode b64 "shellmates{" ta được c2hlbGxtYXRlc3t . Ciphertext thiếu 3 byte c2h khi kết hợp lại và decode thu được flag
Flag: shellmates{Y0u_h4V3_70_uNd3r5t4nD_H0w_B45364_w0Rk5}
SRNG
Challenge cho file challenge.py
Phuc RiO changed 2 years agoView mode Like Bookmark
Crypto
Warmup 1
Challenge cho ciphertext : GmvfHt8Kvq16282R6ej3o4A9Pp6MsN
ciphertext dùng rot13 và base58 để encode
Decode bằng cyberChef
Flag: cvctf{base58_with_rot}
Warmup 2
This cipher is invented by French cryptographer Felix Delastelle at the end of the 19th century.
Phuc RiO changed 2 years agoView mode Like Bookmark
Crypto
ranch
Challenge cho chuỗi Caesar dressing is so 44 BC...
rtkw{cf0bj_czbv_nv'cc_y4mv_kf_kip_re0kyvi_uivjj1ex_5vw89s3r44901831}
decode bằng dcoder
Flag: actf{lo0ks_like_we'll_h4ve_to_try_an0ther_dress1ng_5ef89b3a44901831}
impossibble
Phuc RiO changed 2 years agoView mode Like Bookmark
Crypto
ReadMyCert
Challenge cho một file đuôi .csr chúng ta cần đọc file đó để tìm được flag.Dưới đây là đoạn code đọc file .csr bằng python
script.py
from OpenSSL import crypto
with open('readmycert.csr', 'rb') as f:
Phuc RiO changed 2 years agoView mode Like Bookmark
1. Kiến thức cơ sở.
Định nghĩa
Đường cong Elliptic là một đối tượng hình học trừu tượng được định nghĩa bởi phương trình dạng $y^2 = x^3 + ax + b$, trong đó $a$ và $b$ là các hằng số được chọn trước đó.
Các đường cong này có những tính chất đặc biệt và rất phức tạp, tạo ra nhiều lý thuyết và ứng dụng thú vị. Trong lý thuyết số, đường cong Elliptic liên quan đến bài toán đường cong Elliptic, một trong những bài toán khó nhất trong lý thuyết số. Trong mật mã học, đường cong Elliptic được sử dụng trong các thuật toán mật mã hóa khóa công khai như ECDSA và ECDH.
Điều thú vị về đường cong Elliptic là chúng có tính chất đối xứng và liên quan đến các hệ thống điểm trên không gian affine và projective. Chúng cũng có mối liên hệ với các hàm lượng giác như tổng điểm và phép nhân điểm.
Do tính phức tạp của chúng, đường cong Elliptic được nghiên cứu sâu rộng trong toán học và có nhiều ứng dụng thực tế quan trọng.
Phuc RiO changed 2 years agoView mode Like Bookmark
Baby One Time Pad
challenge.py
#!/usr/bin/env python3
# "BabyOneTimePad" challenge for KalmarCTF 2023
# based on "EasyOneTimePad"
# original challenge by shalaamum
# idea to make this easier variant by killerdog
Phuc RiO changed 2 years agoView mode Like Bookmark
Group (Abstract Algebra)
Định nghĩa
Trong toán học, một nhóm (group) là một tập hợp các phần tử được trang bị một phép toán hai ngôi kết hợp hai phần tử bất kỳ của tập hợp thành một phần tử thứ ba thỏa mãn bốn điều kiện gọi là tiên đề nhóm, lần lượt là tính đóng, tính kết hợp, sự tồn tại của phần tử đơn vị và tính khả nghịch. Một trong những ví dụ quen thuộc nhất về nhóm đó là tập hợp các số nguyên cùng với phép cộng; khi thực hiện cộng hai số nguyên bất kỳ luôn thu được một số nguyên khác. Hình thức trình bày trừu tượng dựa trên tiên đề nhóm, tách biệt nó khỏi bản chất cụ thể của bất kỳ nhóm đặc biệt nào và phép toán trên nhóm, cho phép nhóm bao trùm lên nhiều thực thể với nguồn gốc toán học rất khác nhau trong đại số trừu tượng và rộng hơn, và có thể giải quyết một cách linh hoạt, trong khi vẫn giữ lại khía cạnh cấu trúc căn bản của những thực thể ấy. Sự có mặt khắp nơi của nhóm trong nhiều lĩnh vực bên trong và ngoài toán học khiến chúng trở thành nguyên lý tổ chức trung tâm của toán học đương đại.
Tính chất
Trong đại số trừu tượng, một nhóm (group) là một tập hợp các phần tử kèm theo một phép toán nhất định trên tập hợp đó, thỏa mãn các tính chất sau:
Tính đóng: Cho hai phần tử a và b bất kỳ trong nhóm G, thì a * b cũng phải thuộc G.
Tính kết hợp: Với mọi $a, b, c$ trong nhóm G, ta có $(a * b) * c = a * (b * c)$, trong đó $*$ là phép toán trên nhóm.
Tồn tại phần tử đơn vị: Tồn tại một phần tử $e$ trong nhóm G sao cho với mọi $a$ trong nhóm G, ta có $a * e = e * a = a$.
Phuc RiO changed 2 years agoView mode Like 1 Bookmark