Bài viết được ghim
IV. Phân tích và khai thác các lỗ hổng Web cache poisoning
- Ví dụ về tìm kiếm unkeyed values
Như ở bài viết trước đã đề cập, việc tìm kiếm các giá trị unkeyed đóng vai trò quan trọng trong tấn công web cache poisoning. Trong bài lab Web cache poisoning with an unkeyed header, chúng ta sẽ sử dụng một extension "đắc lực" trong công cụ Burp Suite để tìm kiếm các giá trị unkeyed.
Quan sát resp...
Tất cả bài viết
IV. Static directory cache rules attack
- Cache rules
Đây là các cache rules dành cho các tệp tin tĩnh nằm trong một số thư mục (thường là public) như /static, /assets, /scripts, /images, ... Khi người dùng truy cập đến các tệp tin này, thường trong URL sẽ chứa các từ khóa này.
Ví dụ cache rules tại server cache:
cache_rules: Cache static assets only in the /static directory with specific ...
III. Static extension cache rules attack
- Cache rules
Cache rules dành cho static extension thường lưu lại các tệp tin .css, .js, ico, jpg, png, gif, ... trên server cache, vì đây là các file tĩnh và hầu như không thay đổi nội dung. Ý tưởng này khá đơn giản nên cache rules dành cho chúng thường được xây dựng đơn sơ:
rules: Cache all requests with common static file extensions
- condition...
I. Giới thiệu
Web cache deception là một dạng tấn công mới nhắm vào bộ nhớ đệm trong những năm gần đây. Nhắc tới lỗ hổng web cache deception, một số bạn có thể liên tưởng tới một dạng lỗ hổng chúng ta đã phân tích - web cache poisoning. Vậy thì chúng khác nhau như thế nào? Đầu tiên về tên gọi, poisoning là đầu độc, deception là sự đánh lừa. Hai dạng tấn công này khác nhau chủ yếu ở cách thực h...
V. Trích xuất dữ liệu hiệu quả hơn
Trong bài viết trước chúng ta đã tìm hiểu về phương pháp sử dụng tấn công brute force kết hợp toán tử $regex tìm ra từng ký tự của dữ liệu trong bảng. Có thể kết hợp thuật toán tìm kiếm Binary search để tối ưu thời gian tìm kiếm mật khẩu, chương trình minh họa:
A function that returns True if the regex passes def test_password(regex): data = { "u...
III. NoSQL syntax injection
Phương thức tấn công NoSQL syntax injection xảy ra khi attacker có thể inject input tùy ý dẫn đến phá vỡ cấu trúc cú pháp của câu truy vấn ban đầu. Xem xét route /product/lookup sau:
const Product = mongoose.model('Product', productSchema);
app.get('/product/lookup', async (req, res) => { let category = req.query.category;
try {
const products = a...
I. Mở đầu
- Giới thiệu về NoSQL
Lần đầu nghe tới NoSQL chắc hẳn phản ứng đầu tiên của mọi người là cái tên kỳ lạ này nhỉ. Vì sao có SQL rồi còn phải sinh ra NoSQL? Để trả lời câu hỏi này, chúng ta cùng xem lại một số tính chất của ngôn ngữ SQL thông thường.
Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) sử dụng ngôn ngữ SQL yêu cầu dữ liệu phải có cấu trúc chặt chẽ (như bảng, dòng, cột), phù hợp...
IV. Server-side parameter pollution
- Internal API routing
Một cách routing phổ biến hiện nay là sử dụng internal API: ứng dụng client gửi một yêu cầu đến server với các tham số cơ bản, sau đó server xử lý yêu cầu này và tạo một yêu cầu khác đến internal API (API nội bộ) để lấy thông tin cần thiết trả về cho client. Cụ thể các bước với ví dụ như sau:
Request từ client đến server
Khi người ...
I. Giới thiệu
API (Application Programming Interfaces) là một giao diện lập trình ứng dụng. Có thể hiểu API là một tập hợp các quy tắc và giao thức cho phép các ứng dụng hoặc dịch vụ khác nhau giao tiếp với nhau, giống như một cầu nối giúp các phần mềm khác nhau có thể tương tác mà không cần hiểu toàn bộ cấu trúc nội bộ của nhau.
Một ví dụ thường được sử dụng giúp dễ dàng hình dung về API: Gi...
I. Hash attack
Về việc đưa ra một thuật toán băm "ngược" nhằm tìm ra chính xác thông điệp từ là không thể. Nguyên lý của hàm băm chính là đưa các thông điệp với độ dài tùy ý trở về "khuôn khổ" một chuỗi có cấu tạo và độ dài cố định, tức kết quả băm nằm trong một không gian có độ lớn giới hạn. Chúng ta không thể dựa vào một không gian giới hạn tìm ngược lại thông điệp - thuộc một không gian ...
I. Định nghĩa
Dựa theo bối cảnh mật mã học, chúng ta có thể định nghĩa hàm băm là một phép toán đưa thông điệp đầu vào (chuỗi ký tự, độ dài tùy ý) xử lý và trả về kết quả là một xâu ký tự có độ dài cố định. Từ đó có thể thực hiện quá trình xử lý dữ liệu dễ dàng hơn do các khối dữ liệu trở nên thống nhất và cấu tạo và độ dài.
Ký hiệu là hàm băm, với thông điệp , chúng ta thu được bản mã :
Cá...
I. Phương trình ax+by=c
Xét phương trình với các hệ số nguyên, cần tìm là các ẩn nguyên. Đặt (ước chung lớn nhất), khi đó tồn tại các số nguyên sao cho . Từ kết quả có thể chứng minh được điều kiện cần và đủ để phương trình có nghiệm nguyên là là ước của (Bạn đọc tự chứng minh).
II. Thuật toán Euclid tìm ƯCLN
Bài toán tìm ước chung lớn nhất của hai số nguyên dương và đã quá quen thu...
I. Một số kiến thức cơ bản về module
- Định nghĩa
Trong toán học, số học mô đun là một hệ thống số học dành cho số nguyên. Modular math đóng vai trò quan trọng trong mật mã học, giữa chúng tồn tại sự liên hệ mật thiết. Có thể coi phần lớn lý thuyết mật mã được xây dựng dựa trên cơ sở của số học module trong toán học, tiêu biểu có thể kể đến hệ mã hóa RSA làm việc trên các phép toán module. ...
IX. Vấn đề an toàn trong xây dựng thuật toán RSA
RSA vốn là một loại mật mã an toàn, tuy nhiên quá trình sinh khóa phụ thuộc nhiều vào yếu tố lựa chọn từ con người: Bao gồm việc chọn cặp số và số mũ công khai , cùng với cách thức vận dụng quy trình mã hóa đã mang lại các kẽ hở cho kẻ tấn công có thể khai thác. Bởi vậy, để đảm bảo vấn đề bảo mật, an toàn trong việc truyền thông điệp mã hóa bằn...
VI. Common module attack
- Cơ sở lý thuyết
Giả thiết rằng một thông điệp được thực hiện mã hóa RSA đồng thời với số dùng chung, các số và riêng biệt. Trong trường hợp đó, nếu hai số , thỏa mãn điều kiện nguyên tố cùng nhau, hay , thì chúng ta hoàn toàn có thể sử dụng hình thức tấn công Common module attack nhằm tìm ra thông điệp gốc khi biết bản mã.
Bài toán có thể phát biểu như sau: D...
V. Thuật toán Pollard (tiếp)
- Tấn công phân tích nhân tử theo thuật toán Pollard Rho (Pollard )
2.1. Thuật toán Pollard
Xét số là tích của hai số nguyên tố lớn và . Tương tự với ý tưởng của thuật toán Pollard's , để tìm được một ước nguyên tố của , chúng ta sẽ tìm kiếm hai số nguyên dương và không vượt quá và thỏa mãn:
Vì khi đó , mà nên . Từ đó:
Hay chắc chắn là một ước (khác $1...
IV. Một số kỹ thuật tấn công n - phân tích số lớn ra tích hai thừa số nguyên tố (tiếp)
- Tấn công với số n không phải tích hai số nguyên tố lớn
Một số bạn có thể thắc mắc, mật mã RSA thực chất là bài toán lũy thừa trong module số , vậy thì tại sao buộc phải chọn là tích hai số nguyên tố lớn. Có thể chọn chỉ là một số đủ lớn, hay thậm chí chỉ là một số nguyên tố đủ lớn hay không?
Khi khôn...
III. Mật mã RSA - thực hiện (tiếp)
- Sinh số nguyên tố trong Python
Bước đầu tiên để tạo ra một cặp khóa public key và private key là lựa chọn cặp số nguyên tố , chúng sẽ đóng vai trò nền tảng cho tất cả các bước tạo khóa phía sau. Vậy thì, làm sao để tạo ra một cặp số nguyên tố ?
Ngày trước, khi không có sự hỗ trợ của các công nghệ tiên tiến, người xưa đã "lưu lại" các số nguyên tố bằng cá...
III. Mật mã RSA - thực hiện
- Kiến thức chuẩn bị
1.1. Số nguyên tố
Số nguyên tố là một khái niệm toán học quen thuộc chúng ta đã được tiếp xúc ở thời THCS. Một số tự nhiên lớn hơn .
Định lý vô hạn số nguyên tố: Từ thế kỷ III trước Công nguyên, nhà toán học Hy Lạp Ơ-Clit (Euclide) đã chỉ ra và chứng minh rằng tập hợp các số nguyên tố là vô hạn. Cách chứng minh rất đơn giản bằ...
I. Tổng quan về mật mã bất đối xứng (Asymmetric ciphers)
- Tình huống người đưa thư - khó khăn của mật mã đối xứng
Trước khi đi vào tìm hiểu mật mã bất đối xứng, xem xét tình huống như sau: Hai người ở xa A và B gửi thư cho nhau, thư được vận chuyển thông qua một người đưa thư. Ở đây, nội dung lá thư ở dạng plaintext, tức có thể xảy ra trường hợp người đưa thư đọc trộm nội dung lá thư. Bởi v...
VIII. CBC bitflipping attacks
- Điểm yếu của vector khởi tạo iv
Trong phần này, chúng ta sẽ cùng thảo luận về một dạng tấn công nhắm vào mode CBC trong mật mã đối xứng AES - CBC bitflipping attacks. Trước hết, cùng quan sát lại sơ đồ giải mã của AES CBC:
Mỗi block ciphertext sau khi trải qua quá trình "block cipher decryption" (có sự tham gia của key) đều sẽ cần một phép XOR cuối cùng để th...