url

ThinkPHP5框架缺陷导致远程命令执行(POC整合帖)

南笙酒味 提交于 2020-01-30 00:37:02
摘要 近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞。 影响范围 5.x < 5.1.31 <= 5.0.23 危害 远程代码执行 漏洞分析 以下漏洞分析源于斗鱼SRC公众号:斗鱼安全应急响应中心 分析补丁: 802f284bec821a608e7543d91126abc5901b2815 路由信息中 controller 的部分进行了过滤,可知问题出现在路由调度时。 以5.1.23版本进行分析,执行路由调度的代码如下: 其中使用了 $this->app->controller 方法来实例化控制器,然后调用实例中的方法。跟进 controller 方法: 其中通过parseModuleAndClass方法解析出 $module 和 $class ,然后实例化 $class 。 rseModuleAndClass 方法中,当 $name 以反斜线\开始时直接将其作为类名。利用命名空间的特点,如果可以控制此处的 $name (即路由中的controller部分),那么就可以实例化任何一个类。 接着,我们再往回看路由解析的代码。其中 route/dispatch/Url.php:: parseUrl 方法调用了 route/Rule.php:: parseUrlPath 来解析 pathinfo

Node.js学习笔记(五) http模块

孤街醉人 提交于 2020-01-29 23:24:41
这篇文章我们将会学习 Node 的内置模块 http,http 模块主要用于 搭建 HTTP 服务端和客户端 1、http 服务端 (1)创建服务 http 服务端通过 http.Server 实现,我们可以通过以下两种方法创建一个 http.Server const http = require('http') // 方法一 var server = new http.Server() // 方法二 var server = http.createServer() (2)绑定事件 http.Server 是一个 基于事件 的服务器,我们需要为不同的事件指定相应的处理函数,即可完成功能 最常用的事件莫过于 request ,当服务器获取到请求时,就会触发该事件 事件处理函数接收两个参数,分别对应 http.IncomingMessage 和 http.ServerResponse server.on('request', function(message, response) { console.log(message instanceof http.IncomingMessage) // true console.log(response instanceof http.ServerResponse) // true console.log('收到请求') }) (3)属性方法

RestTemplate的异常 Not enough variables available to expand

三世轮回 提交于 2020-01-29 22:06:54
当使用 RestTemplate 可能会遇到异常: Not enough variables available to expand 典型如下: @Autowired private RestTemplate restTemplate; String url = "http://localhost:8080/search?people={\"name\":\"jack\",\"age\":18}"; String email = restTemplate.getForObject(url, String.class); 这样使用,会出现如下报错信息: Exception in thread "main" java.lang.IllegalArgumentException: Not enough variable values available to expand '"name"' 这个地方很令人费解,难道不能这样使用?经过一顿查找,发现原来是因为。。。 url因为本身的原因,把花括号 { } 中的内容当成了占位符,而这里又没有明确说明占位符对应的值,所以会导致报错。 只需要简单几步即可解决。在url中使用占位符,将占位符的值即所传 json 放在第3个参数位置。 如下: String json = {"\"name\":\"jack\",\"age\":18"}; String

http状态码附录

青春壹個敷衍的年華 提交于 2020-01-29 18:57:17
3 http状态码附录 3.1 状态码1xx 100 Continue: 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。 101 Switching Protocols: 服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。 102: 由WebDAV(RFC 2518): 扩展的状态码,代表处理将被继续执行 3.2 状态码2xx:成功 200 OK: 请求成功(其后是对GET和POST请求的应答文档。) 201 Created: 请求被创建完成,同时新的资源被创建。 202 Accepted: 供处理的请求已被接受,但是处理未完成。 203 Non-authoritative Information: 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。 204 No Content: 没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。 205 Reset Content: 没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。 206 Partial Content: 客户发送了一个带有Range头的GET请求,服务器完成了它。 3.3 状态码3xx:重定向 300 Multiple Choices: 多重选择

Ajax+Node.js前后端交互最佳入门实践(07)

拥有回忆 提交于 2020-01-29 18:37:50
7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="ajax.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> window.onload = function(){ var oBtn = document.getElementById("btn"); oBtn.onclick = function(){ setInterval(function(){ ajax("get",'getData.php','',function(data){ var oUl = document.getElementById('ul1'); var html = '' for(var i = 0; i < data.length; i++) { var oli = document.createElement('li'); html += '<li>'+ data[i].title + '[' + data[i].time + ']</li>'; } oUl

怎么通过URL访问到服务器上的物理文件

这一生的挚爱 提交于 2020-01-29 18:08:56
目的 :搞清楚在jsp页面中如何引用static目录结构中的静态资源 一、URL URL的全称是统一资源定位符,俗称网页地址(网址),如同在网络上的门牌,是因特网上标准的资源的地址(Address)。 URL的语法是一般的,可扩展的,它使用ASCII代码的一部分来表示因特网的地址。URL的开始,一般会标志着一个计算机网络所使用的网络协议。 统一资源定位符的标准格式: 协议类型://服务器地址(必要时需加上端口号)/路径/文件名 超文本传输协议(HTTP)的URL将从因特网获取信息的五个基本元素包括在一个简单的地址中: 1、传送协议。 2、服务器。(通常为域名,有时为IP地址) 3、端口号。(以数字方式表示,若为HTTP的预设值“:80”可省略) 4、路径。(以“/”字元区别路径中的每一个目录名称) 5、查询。(GET模式的表单参数,以“?”字元为起点,每个参数以“&”隔开,再以“=”分开参数名称与资料,通常以UTF8的URL编码,避开字元冲突的问题) 二、域名解析 首先浏览器会去解析www.xxx.com这个域名(主机名)对应的IP地址,步骤如下 第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。 第三步:如果本地的缓存中没有该纪录

网络面试:URL的组成以及输入URL后的全过程,用到的协议

末鹿安然 提交于 2020-01-29 17:40:03
URL的组成 以http://www.helloworld.com:80/hello/world为例: 使用的应用层协议: http 服务器: www 域名: helloworld.com 端口: 80 访问的具体目录下的文件: hello/world 输入URL回车后的过程 1. 对域名进行解析 对域名进行解析即把域名转换为对应的IP地址的过程,主要使用 DNS 协议 1)浏览器查看自己的DNS缓存,看是否能找到与域名相对应的IP地址,如果没找到,则进行2) 2)查看操作系统的DNS缓存,如果还是没找到,进行3) 3)访问本地域名服务器,若无,进行4) 需要注意的是,1-3过程是递归查询过程, 意思是浏览器找操作系统,操作系统找本地域名服务器,依次递归下去,而不是浏览器找完操作系统后,再自己去找本地域名服务器,流程图为: 浏览器->操作系统->本地域名服务器 4)本地域名服务器向根域名服务器发起DNS请求,若无,则5) 5)本地域名服务器向com域的顶级域名服务器发起DNS请求,若无,则6) 6)本地域名服务器向权限域名服务器发起DNS请求,得到IP地址 4-6过程为迭代过程, 意思是本地域名服务器找根域名服务器,根域名服务器说我没有,你去找com域的顶级域名服务器吧, 我不帮你找 ,然后本地域名服务器自己去找com域的顶级域名服务器……流程图为: 本地域名服务器->根域名服务器

Mongoose使用

ε祈祈猫儿з 提交于 2020-01-29 16:15:18
文章来自 Mongoose基础入门 Mongoose的API Mongoose模式扩展 指南之查询 指南之验证 mongoose方法很多,很乱,版本不一样,有些方法可能都过时了,所以整理了很久 连接数据库 先下插件,目录创建一个mongoose文件夹,mongoose文件夹里有一个入口的 index.js 和一个 model 文件夹 // mongoose/index.js var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/app',{useNewUrlParser:true,useUnifiedTopology: true},function(err){ if(err){ console.log('Connection Error:' + err) }else{ console.log('mongoose Connection success!') } }); module.exports = mongoose; // app.js // 启动的时候连接一下mongodb,不需要使用 koa.use const mongoose = require('./src/mongoose') 整个操作流程分为 创建Schema和校验器 由Schema创建model 操作【分为存和查】

How to download an image with Python 3/Selenium if the URL begins with “blob:”?

核能气质少年 提交于 2020-01-29 08:09:05
问题 When using web.whatsapp.de one can see that the link to a recieved image may look like this: blob:https://web.whatsapp.com/3565e574-b363-4aca-85cd-2d84aa715c39 If the link is copied in to an address window it will open up the image, however - if "blob" is left out - it will simply open a new web whatsapp window. I am trying to download the image displayed by this link. But using common techniques such as using request, or urllib.request or even BeautifulSoup always struggle at one point: The

java context 讲解

有些话、适合烂在心里 提交于 2020-01-29 05:52:54
在 java 中, 常见的 Context 有很多, 像: ServletContext, ActionContext, ServletActionContext, ApplicationContext, PageContext, SessionContext ... 那么, Context 究竟是什么东西呢? 直译是上下文、环境的意思。比如像: "今天我收到了一束花, 男朋友送的!" 又或者 "今天我收到了一束花, 送花的人送错了的!" 同样是收到一束花, 在不同的上下文环境中表达的意义是不一样的。 同样的, Context 其实也是一样, 它离不开所在的上下文环境, 否则就是断章取义了。 另外, 在网络上也有些人把 Context 看成是一些公用信息或者把它看做是一个容器的, 个人觉得这种解释稍好。 接下来说说 ServletContext, ActionContext, ServletActionContext 。 1> ServletContext 一个 WEB 运用程序只有一个 ServletContext 实例, 它是在容器(包括 JBoss, Tomcat 等)完全启动 WEB 项目之前被创建, 生命周期伴随整个 WEB 运用。 当在编写一个 Servlet 类的时候, 首先是要去继承一个抽象类 HttpServlet, 然后可以直接通过