前言
ASP ASPX C# .NET ASP.NET 之间的关系
C#:C#是一门开发语言,和C语言,C++一样都是一门独立的语言,C#主要运行在.net平台上。
C#可以进行两种模式的开发,一种为C/S端,一种为B/S端,C/S端的开发又有两种模式,分别为WinForm和WPF
B/S端的开发有三种模式,分别为单页面(最简单),MVC和WEB Forms。使用C#的B/S端进行开发使用的语言为ASP.NET。
1、.NET:可以看做成是微软开发的一系列类库,它是一个平台,也是一个底层。
2、ASP.NET:可以看做是.NET下为了实现WEB应用开发的一个技术,和.NET的关系可以看成是父子关系。
3、ASP:ASP严格上来不能说是一种语言,而是一种环境,它所采用的语言是VSScript。ASP和APSX其实不大一样,但是因为IIS在安装的时候,大部分都会默认勾选一个ASP.NET的角色服务,因此绝大部分的ASP站点或ASPX站点都能够将两种语言同时进行解析
4、ASPX:ASPX是使用了ASP.NET语言的web服务端。ASPX上面说了有Web Form 这个模式。
ASPX,CS 和 DLL
WebForm分为两个文件aspx和aspx.cs,前ASPX后.CS的方式就被称为CodeBehind
而cs在发布的时候,会进行编译,编译后成为一个模块,也就是DLL部分。
DLL的代码可以使用工具Reflector来进行审计
优势:
如果你的页面排版改变了,但是你如果不想改变编码,你可以在.cs中编写代码。如果什么东西你都写在.aspx中,你要改的话就全部要该。另外,这样可以方面合作,一人负责界面的设计,一人负责代码的编写,这样是很方面的。如果没有的话,就很麻烦。
1、IIS发布文章
Win-server服务器安装好IIS中间件后,会默认生成一个默认站点在80端口,之后在新增网站处可以选择添加其他路径文件夹和指定端口发布新的网站业务,但是初次指定后,会出现一些奇怪的报错,例如401,或权限不足之类
1、Win7 IIS7 配置错误由于权限不足而无法读取配置文件
https://blog.csdn.net/csnewdn/article/details/59096770
2、由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置
https://blog.csdn.net/wyz670083956/article/details/79092446
总结的来说就是要添加两个用户的权限一是IIS_IUSRS用户权限 二是Everyone用户权限
2、IIS(.net环境下)默认支持的语言后缀
选择如下图所示的IIS+ASP环境配置
一般asp后缀的语言通常支持asp、asa、cer、cdx、htr,asax,aspx,asmx,ashx,ascx,inc,.vbhtml等后缀
还有cshtml——怕忘记放下链接
https://blog.csdn.net/weixin_34261415/article/details/90356822
cer默认配置解析(语言结构和asp一样)
ashx默认配置解析
<% @ webhandler language="C#" class="AverageHandler" %>
using System;
using System.Web;
public class AverageHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write("hello world ashx");
}
}
某大佬总结的解析后缀,当然这些是需要一些配置的
3、第一个WebForm程序
使用Visual studio 安装好Asp.net Webappcation 后第一个程序如下,右边的startup.cs文件
4、我们来简单看看aspx和ashx和asmx的区别
可以看到他们的关键代码段是一模一样的
aspx的代码段全部使用<%%>所包裹住。
ashx多了一个public processRequest
asmx则使用public webservice来指明
5、exe和dll
众所周知,在遇到aspx相关的代码审计时,常常会有一个Bin文件下面放置的多个dll文件,这里面的dll文件经过dnSpy等反编译工具可以还原成相关的web代码。
但是实际上,我们要知道dll文件和exe文件其实的差别就在于PE内部的一个字段的声明,因此exe文件也能通过dnSpy等反编译工具进行代码的还原,如下所示
using System;
namespace MyApplication
{
class App
{
public static void Main(string[] args)
{
Console.Write("hello");
}
}
}