WEB攻防-.NET特性常见漏洞

目录

前置知识:

DLL文件

.NET和DLL文件

C#和DLL文件

关系总结

.NET 配置调试-信息泄露

.NET 源码反编译-DLL 反编译与未授权访问

编译DLL文件

反编译DLL文件

注意事项

案例:

验证代码文件有没有可以绕过(Cookie&Session)

找那些文件没有包含验证代码文件


前置知识:

DLL文件

DLL文件(Dynamic Link Library)是Windows操作系统中的一种二进制文件格式,它包含可以由多个程序同时使用的代码和数据。DLL文件通常包含函数、数据、资源等,它们可以被执行文件(如.exe文件)或其他DLL文件调用。DLL文件有助于代码重用和模块化,因为多个应用程序可以共享同一个DLL文件中的代码。

.NET和DLL文件

在.NET中,DLL文件通常指的是程序集(Assembly),它们是.NET框架下的可重用代码单元。程序集可以是DLL文件或EXE文件,它们都包含MSIL(Microsoft Intermediate Language)代码,这是.NET框架下的中间语言。当程序集被加载到.NET运行时环境(CLR)中时,MSIL代码会被编译成机器码并执行。

C#和DLL文件

C#是一种编译型语言,但它编译成的不是直接可以在CPU上执行的机器码,而是MSIL代码。这意味着C#编写的代码在编译时会生成DLL或EXE文件,这些文件包含MSIL代码。当这些文件被执行时,CLR会负责将MSIL代码编译成机器码,并在适当的时候执行它。

关系总结

  • C#编译成DLL或EXE文件:C#编写的代码在编译时会生成DLL或EXE文件,这些文件包含MSIL代码。
  • .NET提供运行时环境:.NET框架的CLR提供运行时环境,负责将MSIL代码编译成机器码并执行。
  • DLL文件是.NET程序集:在.NET中,DLL文件是程序集的一种形式,它包含可由多个应用程序共享的代码。

因此,C#、.NET和DLL文件之间的关系是:C#编写的代码编译成包含MSIL代码的DLL或EXE文件,这些文件在.NET框架的CLR运行时环境中执行。DLL文件作为程序集,在.NET中扮演着重要角色,使得代码可以模块化、重用和共享。

.NET 配置调试-信息泄露

在ASP.NET应用程序中,web.config 文件用于配置应用程序的行为。customErrors 元素是 web.config 文件中的一个重要部分,它允许你控制当应用程序发生错误时显示给用户的错误信息。customErrors 元素的 mode 属性决定了是否启用自定义错误页面,以及如何处理这些错误。

mode 属性可以设置为以下几个值:

  1. Off:禁用自定义错误页面。当发生错误时,会显示详细的错误信息给最终用户,包括堆栈跟踪。这通常只在开发环境中使用,因为它可能会泄露敏感信息。

  2. On:启用自定义错误页面。当发生错误时,会重定向到指定的错误页面(通常是一个友好的错误消息),而不是显示详细的错误信息。这是生产环境中常用的设置,因为它可以防止敏感信息泄露给最终用户。

  3. RemoteOnly:这是一个介于 OffOn 之间的选项。当请求来自本地服务器(即开发机器)时,会显示详细的错误信息;而当请求来自远程客户端时,会重定向到自定义错误页面。这允许开发人员在本地开发时看到完整的错误信息,而在部署到生产环境时仍然保护用户免受敏感信息的侵害。

要配置 customErrors 元素和 mode 属性,你需要在 web.config 文件的 <system.web> 部分中添加或修改 customErrors 元素。下面是一个配置 customErrors 的示例:

<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="&#126;/Error.aspx">
<error statusCode="404" redirect="&#126;/Error404.aspx" />
<error statusCode="500" redirect="&#126;/Error500.aspx" />
</customErrors>
</system.web>
</configuration>

在这个示例中,mode 被设置为 "On",这意味着当发生错误时,应用程序将重定向到 Error.aspx 页面。对于特定状态码(如 404 和 500),可以指定不同的错误页面。

确保在生产环境中始终启用自定义错误(即设置 mode="On"),以保护应用程序免受信息泄露攻击。同时,确保自定义错误页面不包含任何可能泄露应用程序内部信息的内容。

案例演示:

customErrors 元素的 mode 属性设置为On时候,这里我写了一个报错页面,让他报错默认跳转到Error500.html

因为我没有配置数据库,所以在登录页面测试,登录肯定涉及到查数据库的,所以肯定会报错

而 当customErrors 元素的 mode 属性设置为Off时候,就爆出了数据库错误,和.NET版本

.NET 源码反编译-DLL 反编译与未授权访问

DLL(动态链接库)文件在.NET环境中是包含已编译代码的库,它们通常由C#、VB.NET或其他.NET语言编写的源代码编译而成。这些文件包含元数据、中间语言(MSIL)代码和资源,它们在运行时被.NET公共语言运行时(CLR)解释或即时编译(JIT)成机器代码。

编译DLL文件

在.NET中,你可以使用Visual Studio或命令行工具(如csc.exe对于C#)来编译源代码并生成DLL文件。以下是使用Visual Studio编译DLL的基本步骤:

  1. 创建类库项目:在Visual Studio中,选择“创建新项目”并选择“类库”模板。
  2. 编写代码:在项目中添加类和方法,编写你的逻辑。
  3. 构建项目:选择“生成”菜单中的“生成解决方案”来编译项目。如果编译成功,将在项目的输出目录(通常是bin\Debugbin\Release)中生成DLL文件。

反编译DLL文件

反编译DLL文件意味着将已编译的二进制代码转换回源代码或中间表示形式。在.NET中,由于元数据与代码一起存储,因此可以相对容易地反编译DLL以获取源代码的近似表示。但是,请注意,反编译得到的代码通常不会是原始的、未经修改的源代码,特别是如果原始源代码经过了混淆或加密处理。

以下是使用反编译器反编译DLL文件的步骤:

  1. 选择反编译器:选择一款.NET反编译器,如dotPeek、ILSpy、dnSpy或JustDecompile。
  2. 打开DLL文件:使用反编译器的图形界面打开DLL文件。
  3. 浏览代码:反编译器将显示DLL中的类、方法和其他成员。你可以浏览这些成员并查看它们的实现。
  4. 导出代码(可选):一些反编译器允许你将反编译的代码导出为项目文件或源代码文件。这通常不是原始源代码的完美复制,但可以作为起点进行进一步的开发或分析。

注意事项

  • 混淆和加密:如果DLL经过了混淆或加密处理,反编译得到的代码可能很难理解或分析。
  • 不完整性:即使使用了最先进的反编译器,也不能保证得到的代码与原始源代码完全相同。有些细节可能会在编译过程中丢失。

案例:

工具:ILSpy,burp

未授权访问一般分两种情况:

  • 验证代码文件有没有可以绕过(Cookie&Session)

当我们访问http://192.168.10.134/purchase.pd.aspx#时,会跳转让我们登录

打开pd.aspx源文件,并没有看到验证代码,但可以看到有一个母版路径purchase.Master,CodeBehind指向的后端代码和继承了purchase.pd

打开purchase.Master也没有验证代码,但是继承了pur

使用ILSpy对bin目录下的purchas.dll反编译,查看Purchase.Purchase.pur的源码,可以看到代码中对GetUserId作了一个判断,满足条件就跳转登录页面

点一下UserHelper追踪到这个类,可以看到这个方法做了一个Cookie判断,如果"userinfo"这个Cookie存在,则从该Cookie中取出名为"userid"的值,并将其转换为整数返回。都不满足条件就返回-1,联合上面代码就是让其跳转登录页面

使用burp抓包尝试验证代码可不可以绕过(Cookie&Session),这种情况一般在白盒可以看源代码的情况下

正常情况会被重定向

当我们添加Cookie:userinfo=userif=1时,验证代码就被绕过了

回到拦截页面添加这个Cookie在放包,就成功访问到了

  • 找那些文件没有包含验证代码文件

比如popuser.aspx 就没有包含验证码的母版

直接访问

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

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

相关文章

【C++】二叉树的进阶

二叉树的进阶 二叉搜索树概念操作实现创建树形结构拷贝构造函数构造函数析构函数赋值运算符重载循环版本查找插入删除 递归版本查找插入删除 应用K模型KV模型性能分析 二叉树进阶面试题二叉树创建字符串二叉树的分层遍历I最近公共祖先二叉搜索树与双向链表前序遍历与中序遍历构…

PyCharm 无法运行的解决方案

问题&#xff1a; PyCharm 无法运行&#xff0c;该怎么办&#xff1f; 解决方案&#xff1a; 1. 检查 Python 解释器 确保已为 PyCharm 配置正确的 Python 解释器。打开 PyCharm&#xff0c;转到“文件”>“设置”>“项目”>“Python 解释器”。选择所需的 Python …

数组和指针经典笔试题讲解下

目录 创作不易&#xff0c;如对您帮助&#xff0c;还望一键三连&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 创作…

震惊!某省图书馆竟然可以注册后直接访问知网并下载文章?

四川省图书馆 使用说明 1.点击进入https://portal.sclib.org/interlibSSO/main/main.jsp 显示如下&#xff1a; 2.关注四川省图书馆公众号并注册 3.点击馆外登录并使用刚注册的用户名密码登录 显示如下&#xff1a; 4.登录成功后跳转至首页并点击cnki即可正常使用

2024年最新一线互联网企业高级软件测试工程师面试题大全

1、功能测试 功能测试是游戏测试中跟“玩游戏”最相关的一个环节。 当然这里的“玩”不是要真的让你感受快乐&#xff0c;而是要通过“玩”游戏&#xff0c;发现存在的问题或不合理的地方。因此&#xff0c;这个“玩”的过程基本不会感受到游戏的乐趣。事实上&#xff0c;每一次…

低代码+定制物资管理:创新解决方案探析

引言 在当今快速变化的商业环境中&#xff0c;企业面临着不断增长的挑战&#xff0c;如提高效率、降低成本、满足客户需求等。为了应对这些挑战&#xff0c;企业需要不断创新并采用先进的技术解决方案。在这样的背景下&#xff0c;低代码开发和定制化物资管理成为了引领企业变…

【3GPP】【核心网】【5G】5G核心网协议解析(四)(超详细)

1. 欢迎大家订阅和关注&#xff0c;精讲3GPP通信协议&#xff08;2G/3G/4G/5G/IMS&#xff09;知识点&#xff0c;专栏会持续更新中.....敬请期待&#xff01; 目录 1. NGAP 按流程功能分类 1.1 接口管理过程 1.1.1 NG Setup 1.2.1 NAS消息传输过程 Transport of NAS Messa…

Android 14设置android:importantForAutofill=“no“无效

密码输入框EditText不希望弹出Google的是否保存密码弹出框&#xff0c; 直接设置了android:importantForAutofill"no"&#xff0c; android:inputType"textPassword|textNoSuggestions"在安卓12手机上有效&#xff0c;但是在安卓14上面就不行了&#xff0…

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性 异常详情 有一个类&#xff0c;里面有两个属性和一个类似工具的getRealName()方法如下&#xff1a; getRealName()方法就是获取这个人的真实名字&#xff0c;如果获取不到就以name返回…

堆的介绍,实现,使用(c语言实现)

目录 堆的概念 堆的性质&#xff1a; 堆的分类 父子结点的下标关系 堆的向下调整算法 ​编辑小堆 大堆 建堆 堆的向上调整算法 小堆 大堆 堆的基本操作 定义堆 初始化堆 销毁堆 打印堆 堆的插入 堆的删除 大堆&#xff08;Max Heap&#xff09;的向下调整算法…

Java 设计模式(上)

目录 一、单一职责原则 二、开闭原则 三、里氏替换原则 四、迪米特法则 五、接口隔离原则 六、依赖倒置原则 七、工厂方法 八、抽象工厂 九、建造者模式 十、原型模式 十一、单例模式 十二、适配器模式 一、单一职责原则 单一职责原则又称单一功能原则&#xff0c;…

回溯-单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相…

SpringMVC深解--一起学习吧之架构

SpringMVC的工作原理主要基于请求驱动&#xff0c;它采用了前端控制器模式来进行设计。以下是SpringMVC工作原理的详细解释&#xff1a; 请求接收与分发&#xff1a; 当用户发送一个请求到Web服务器时&#xff0c;这个请求首先会被SpringMVC的前端控制器&#xff08;Dispatche…

关于远程桌面端口的优化措施的建议

在信息技术的世界中&#xff0c;远程桌面连接已成为企业、教育和个人用户之间共享信息、协作工作的重要工具。而这一切的背后&#xff0c;都离不开远程桌面端口&#xff08;RDP&#xff0c;Remote Desktop Protocol Port&#xff09;的支持。RDP端口不仅关乎到远程访问的顺畅性…

【Linux】进程信号 -- 详解

⚪前言 注意&#xff1a;进程间通信中的信号量跟下面要讲的信号没有任何关系。 一、从不同角度理解信号 1、生活角度的信号 你在网上买了很多件商品&#xff0c;在等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c;你该怎么处理快递&a…

CDA认证:数据行业领跑者,告别危机和低谷!

近日&#xff0c;人力资源社会保障部、中央组织部、中央网信办、国家发展改革委、教育部、科技部、工业和信息化部、财政部、国家数据局等九部门印发《加快数字人才培育支撑数字经济发展行动方案&#xff08;2024—2026年&#xff09;》&#xff08;以下简称《行动方案》&#…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

[NISACTF 2022]bilala的二维码

​​​​​​​NSSCTF{M0RS34ND282X231} 还有一个是像素我找不到

Orange3数据可视化(树查看器-决策树)

树视图 分类和回归树的可视化。 输入 树&#xff1a;决策树 输出 选中的数据&#xff1a;从树节点中选中的实例 数据&#xff1a;带有额外一列&#xff0c;显示每个点是否被选中 这是一个多功能的小部件&#xff0c;用于展示分类和回归树的2D可视化。用户可以选择一个节点…

物联网五层架构:每一层都扮演着不可或缺的角色——青创智通

物联网五层架构涵盖了感知层、网络层、数据层、应用层和业务层&#xff0c;每一层都扮演着不可或缺的角色&#xff0c;共同构成了物联网的完整生态系统。下面我们将详细探讨这五层架构的功能和特点。 首先&#xff0c;感知层是物联网的起点&#xff0c;负责获取和识别各种物理世…