2026/1/15 23:37:00
网站建设
项目流程
计算机网站建设毕业设计题目,wordpress首页添加图片不显示图片,中英文网站建站,专门做图片的网站有哪些免责声明本文仅供学习使用#xff0c;请勿利用文章内的相关技术从事非法测试#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失#xff0c;均由使用者本人负责#xff0c;作者不为此承担任何责任。环境搭建在Internet信息服务#xff08;II…免责声明本文仅供学习使用请勿利用文章内的相关技术从事非法测试由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失均由使用者本人负责作者不为此承担任何责任。环境搭建在Internet信息服务IIS上新建网站设置站点名称和安装路径在应用程序池中找到对应站点程序池托管管道模式默认为集成将其修改为经典模式.NET新建数据库与web.config连接保持一致即可set DBNAMEEIS set SQLUSERsa set SQLPWDpassword01! set SQLSERVER127.0.0.1,1433 connectionStrings add name connectionStringData Source.\SQLEXPRESS;User IDsa;Passwordpassword01!;Initial CatalogEIS;Connection Timeout30;Connect Retry Count3;Connect Retry Interval10;Poolingtrue;Min Pool Size0;Max Pool Size100 providerNameSystem.Data.SqlClient / /connectionStrings按顺序依次导入sql文件Patch产品授权该产品是需要产品授权的访问login.aspx会提示无效或过期逆向破解算法模拟生成授权licsense应用启动时验证流程:读取文件授权(Checker.p_GetLicense())读取Bin/yard.lic文件获取CPU ID和MAC地址解密授权文件解析授权信息10个字段提取FullName读取数据库授权从Mekp_EISProductInfo表读取LicenseKey使用相同的密钥和IV解密解析授权信息2个字段过期时间;FullName验证授权比较文件授权和数据库授权中的FullName是否一致如果是试用版检查过期时间逻辑DateTime.Now expiration→ 返回false如果验证通过将授权信息存储到Application对象中采用加密算法3DES (TripleDES)文件授权lic读取文件并解密密钥CPU xxxxxxx20800IVMAC地址解析10个字段关键字段array[3] DeptName|FullName存入lisenceInfo.FullName时间校验if (DateTime.Now result) return false如果当前时间 过期时间返回false验证失败FullName匹配lisenceInfo.FullName必须与数据库完全一致编写脚本根据 CPU MAC 生成合法 license注释鉴权代码重编译如果觉得第一种方法比较复杂也可以选择第二种简单粗暴的方法直接注释掉核心鉴权代码根据报错的关键字定位相关的文件发现有以下这些文件参与鉴权这些方法都来源于yard.Framework.dllEkpGlobal.CheckLicense() - 核心授权检查EkpPage.OnInit() - 页面初始化检查EkpPage.Page_Load() - 页面加载检查EkpUserControl.Page_Load() - 用户控件检查因此我们可以使用dnspy导入dll再导出工程到vs里面进行重编译成功通过授权校验访问系统首页web.config配置分析根据web.config分析以下路径配置为允许所有用户访问allow users* /部分接口关键字替换了整理如下配置路径访问路径说明location pathXX/XX/*.asmxWebService接口目录所有ASMX文件可匿名访问location pathaaa/aaa/*.aspx该模块目录下所有aspx文件可匿名访问location paththird/third/*.aspx第三方集成目录location pathGlobal/Pages/CheckPage/Global/Pages/CheckPage/*.aspx检查页面目录location pathServices/MobileDown.aspx/Services/MobileDown.aspx移动端下载接口漏洞分析前台SSRF文件路径:bin/yard.UI.Integration/yard.UI.Integration.third.template/Service.cs方法:PostResponsethird目录配置允许匿名访问link参数直接拼接:base.Request[link]直接拼接到URL中未进行任何验证无URL白名单: 未限制可访问的URL范围虽然固定使用http://但可以通过传入link参数控制造成SSRF前台down.aspx SQL注入($...)将用户提供的或来自请求的变量 arg拼接到了 SQL 查询main_id{arg} 变量 arg 在拼接到 SQL 查询之前没有经过任何验证sql注入延时验证前台Notify.asmx SQL注入文件路径:bin/yard.WebService/yard.WebService.WS.Notify/Notify.csLoginName参数直接拼接:person.LoginName直接拼接到SQL查询中[WebMethod] public NotifyResult getTodo(string targets, int type, string otherCond, int rowSize, int pageNo) { Person person JsonConvert.DeserializeObjectPerson(targets); if (!string.IsNullOrEmpty(person.LoginName)) { // SQL注入点: LoginName参数直接拼接 string oneStrValue yard.DataAccess.DataAccess.GetOneStrValue( $SELECT id FROM FI_ORG_EMP where accountN{person.LoginName}); // ... } }构造请求通过xp_cmdshell写入文件1.txt前台任意用户添加文件路径:bin/yard.WebService/yard.WebService.WS/UserInfo.csUser方法使用[WebMethod]标记WS目录被配置为允许所有用户访问该方法无权限校验可直接执行数据库插入操作继承于WebService可直接传入账号密码等信息新建用户首先在数据库中查询是否存在该⽤户 如果不存在就创建FI_ORG_EMP为员工主表可看到成功新建用户后台UploadLogImg.aspx任意文件上传文件binyard.Admin.UIyard.Admin.UIUploadLogImg.cs提供了saveBg()和saveLogo()两个上传的方法string text base.Server.MapPath这个地方路径不可控默认会写到/App_Themes/Login下面文件名为日期命名构造方法上传/App_Themes/Login不允许因此这个上传无法shell后台 bulkinsert_data.aspx任意文件上传但是不要灰心这个点找不到就找下一个继续搜SaveAs(filename)这里还有两个值是必须的__VIEWSTATE和__VIEWSTATEGENERATOR当用户首次访问/XX/bulkinsert_data.aspx?id1时页面加载 -Page_Load方法执行所有服务器控件初始化使用 Base64 编码生成__VIEWSTATE和__VIEWSTATEGENERATOR值ASP.NET 会验证没有ViewState会导致Invalid ViewState错误控件状态无法恢复string text /files/; // 固定基础路径 string fileName tpfile.PostedFile.FileName; // 用户输入 int num fileName.LastIndexOf(\\); // 查找最后一个反斜杠 string empty string.Empty; empty ((num 0) ? (\\ fileName) : fileName.Substring(num)); tpfile.PostedFile.SaveAs(base.Server.MapPath(text empty));可进行目录穿越代码会取最后一个\之后的部分但是正斜杠可以正常绕过..\\third\\shell.aspx→empty shell.aspx❌../third/shell.aspx→empty /third/shell.aspx✅️结合web.config可写到third路径下