Việc sử dụng các bộ lọc PHP là gì?
Tìm kiếm các chuỗi tiện ích mới để khai thác các lỗ hổng khử lưu huỳnh có thể rất tẻ nhạt. Trong bài viết này, chúng tôi sẽ giải thích cách kết hợp một kỹ thuật mới được phát hiện gần đây có tên là bộ lọc PHP [LOKNOP-GIST], để chuyển đổi các nguyên hàm bao gồm tệp trong các ứng dụng PHP sang thực thi mã từ xa. Để hỗ trợ giải thích của chúng tôi, chúng tôi sẽ dựa vào chuỗi tiện ích bao gồm tệp Laravel đã được phát hiện trong quá trình nghiên cứu này Show Nó bắt đầu như thế nào Nghiên cứu về chuỗi POPTất cả bắt đầu từ nghiên cứu về chuỗi tiện ích để cải thiện kỹ năng phân tích mã trên PHP. Lần đầu tiên chúng tôi bắt đầu với một trong những khuôn khổ yêu thích của tôi. giao hưởng. Thật không may, nhiệm vụ khó hơn dự kiến vì hầu hết các đối tượng có khả năng thú vị đều được bảo vệ bởi cơ chế sau
Vì phương thức 5 được gọi tự động khi hủy đánh số, nên một 6 sẽ bị ném ra và phương thức 7 sẽ không bao giờ được thực thiSau một thời gian không tìm thấy gì theo đúng nghĩa đen, chúng tôi đã cố gắng xem xét một khung công tác PHP phổ biến khác. ấu trùng Tệp bao gồm chuỗi trên khung LaravelCác nghiên cứu hiển thị kết quả nhanh hơn rất nhiều trên Laravel. Một chuỗi POP bao gồm tệp đang hoạt động đã được tìm thấy sau vài giờ trên 8 v9. 34. 0 gói. Mặc dù Các nhà phát triển của Laravel đã được liên hệ về vấn đề này, nhưng theo họ, họ không có ý định khắc phục chuỗi tiện ích . 9 on untrusted user inputs.Tệp bao gồm chuỗi tiện ích trên laravel/framework 9. 34. 0PHP unserialization sẽ không được đề cập ở đây vì đã có một số tài nguyên tốt về chủ đề này, chẳng hạn như tài nguyên này. [OWASP-Chuỗi POP] Chuỗi chúng tôi tìm thấy hoạt động như sau
Khi hàm 1 được gọi, nếu giá trị 2 không được xác định, thì luồng thực thi trước tiên sẽ chuyển đến hàm 4 của đối tượng 3. Cái sau gọi hàm 4 của một đối tượng khác có thể được xác định tùy ýTất cả những gì cần làm từ thời điểm này là tìm một đối tượng khác xác định hàm 4 trong các gói Laravel. Bởi vì PHP là ngôn ngữ gõ yếu, chúng ta có thể đặt giá trị của thuộc tính đăng ký cho bất kỳ đối tượng nào khácNgoài ra, nếu một phương thức được gọi với nhiều tham số hơn nguyên mẫu của nó, các tham số bổ sung sẽ bị bỏ qua. Điều này có nghĩa là chúng ta có thể gọi bất kỳ phương thức đăng ký nào từ bất kỳ đối tượng Laravel nào với 0 đến 3 tham số
Lớp 8 có một phương thức đăng ký với một đối số và, đóng băng trên chiếc bánh, có một hàm 9 cho phép trong đó chúng ta hoàn toàn kiểm soát tham số 80Kể từ thời điểm này, chúng tôi đã đưa tệp cục bộ vào phiên bản Laravel mới nhất. Tuy nhiên, điều này là không đủ so với nhiều cách hiện có để thực thi mã thông qua hủy tuần tự hóa trên Laravel như hiển thị danh sách chuỗi cửa sổ bật lên có sẵn của phpggc. Sau khi tìm hiểu một thời gian để thử và chuyển đổi tệp nguyên thủy bao gồm tệp này thành thực thi mã từ xa, chúng tôi đã được một đồng nghiệp (@LoadLow) khuyên nên xem xét chuỗi bộ lọc PHP. Bạn có thể tìm thấy một bài viết khá hay của loknop về chủ đề này tại đây. [LOKNOP-GIST]. Việc khai thác được mô tả trong bài viết không linh hoạt vì nó bỏ sót nhiều tải trọng có thể xảy ra, nhưng từ thời điểm này, chúng tôi muốn tìm cách điều chỉnh nó cho phù hợp với tình huống của mình Bộ lọc PHP để giải cứuTrên khắp thế giới, có gần 7000 ngôn ngữ được nói. Để cho phép hầu hết mọi người trên Trái đất được hưởng lợi từ internet và giao tiếp với nhau, nhiều ký tự in được phải được kích hoạt. Tất cả chúng ta đều biết bảng mã hóa ASCII cơ bản của mình, nhưng nó quá nhỏ để nói bằng tiếng Nhật hoặc thậm chí bằng tiếng Hy Lạp có chứa các ký tự như ' λ ' . Do đó, để có thể in các ký tự từ các ngôn ngữ khác, hoặc thậm chí là biểu tượng cảm xúc, ☺, nhiều bảng mã hóa đã được tạo để chuyển đổi hoặc thậm chí chuyển các ký tự từ ngôn ngữ này sang ngôn ngữ khác khi có thể. ν', 'π'. Thus, to be able to print characters from other languages, or even emojis, ☺, many encoding tables were created to convert or even translit characters from one language to another when possible. Tất cả những ví dụ này chỉ được liên kết với các ngôn ngữ được nói bởi con người. Nhiều RFC được thiết kế cho các giao thức khác để làm cho các ký tự có thể hiểu được trên các hệ thống cũ hơn Trên Linux, bạn có thể liệt kê các bí danh của bảng chuyển đổi thông qua lệnh 81
Các bảng chuyển đổi này cũng có thể truy cập được thông qua các trình bao bọc 82. [PHP-DOC-WRAPPER-CONVERT-ICONV] https. //www. php. net/thủ công/vi/bộ lọc. đổi. php#bộ lọc. đổi. iconv
Các loại bộ lọc trong PHP là gì?Giới thiệu ¶
. xác thực và làm sạch .
Làm cách nào để lọc đầu vào của người dùng trong PHP?Hàm PHP filter_input()
. g. từ đầu vào biểu mẫu) và tùy chọn lọc nó. Hàm này được sử dụng để xác thực các biến từ các nguồn không an toàn, chẳng hạn như đầu vào của người dùng.
Làm cách nào để lọc chuỗi trong PHP?Làm cách nào để lọc hoặc làm sạch các số từ chuỗi trong PHP? . Phương pháp 1. Sử dụng hàm filter_var() Phương pháp 2. Sử dụng hàm preg_replace() Phương pháp 3. Sử dụng chức năng preg_match_all() |