payload

Jwt认识与攻击

假如想象 提交于 2019-11-29 06:17:28
今天看到2018强网杯的题目,因此总结一下。 Json Web Token Json Web Token简称jwt 那么怎么样可以让HTTP记住曾经发生的事情呢? 这里的选择可以很多:cookie,session,jwt 对于一般的cookie,如果我们的加密措施不当,很容易造成信息泄露,甚至信息伪造,这肯定不是我们期望的。 那么对于session呢? 对于session:客户端在服务端登陆成功之后,服务端会生成一个sessionID,返回给客户端,客户端将sessionID保存到cookie中,例如phpsessid,再次发起请求的时候,携带cookie中的sessionID到服务端,服务端会缓存该session(会话),当客户端请求到来的时候,服务端就知道是哪个用户的请求,并将处理的结果返回给客户端,完成通信。 但是这样的机制会存在一些问题: 1、session保存在服务端,当客户访问量增加时,服务端就需要存储大量的session会话,对服务器有很大的考验; 2、当服务端为集群时,用户登陆其中一台服务器,会将session保存到该服务器的内存中,但是当用户的访问到其他服务器时,会无法访问,通常采用缓存一致性技术来保证可以共享,或者采用第三方缓存来保存session,不方便。 所以这个时候就需要jwt了 在身份验证中,当用户使用他们的凭证成功登录时,JSON Web

支持长连接的WebSocket协议

二次信任 提交于 2019-11-29 05:52:19
对于所有的基于服务端的C/S 应用,http请求仅支持请求-响应模式,限制太大,服务器无法主动发送消息给客户端,WebSocket协议既可以由服务端发起消息,也可以由客户端发起请求。 HTTP协议与WebSocket协议声明周期比较: websocket是基于http协议的扩展,支持长连接。服务器端需要tomcat7以上 协议请求地址测试 public static final String WEBSOCKET = "ws://qp.hystudio.cn:9000"; 网页测试地址: http://qp.hystudio.cn:9000/service/service.htm 如果使用多客户端同时使用支持WEBSOCKET的服务端,连接方式如下: WEBSOCKET使用步骤 1/创建一个websocket连接对象 mConnection = new WebSocketConnection(); 2/创建监听器继承WebSocketConnectionHandler public class WebSocketConnectListener extends WebSocketConnectionHandler {} 3/需要和服务器创建消息通道,用于和服务器的数据交互,可以发送和接收数据 public void connect() { if (!isConnect()) {

快速了解会话管理三剑客cookie、session和JWT

跟風遠走 提交于 2019-11-29 03:50:19
更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 存储位置 三者都是应用在web中对http无状态协议的补充,达到状态保持的目的 cookie:cookie中的信息是以键值对的形式储存在浏览器中,而且在浏览器中可以直接看到数据。下图为safari的cookie截图: session:session存储在服务器中,然后发送一个cookie存储在浏览器中,cookie中存储的是session_id,之后每次请求服务器通过session_id可以获取对应的session信息 JWT:JWT存储在浏览器的storage或者cookie中。由服务器产生加密的json数据包括:header,payload和signature三部分组成。header中通常来说由token的生成算法和类型组成;payload中则用来保存相关的状态信息;signature部分由header,payload,secret_key三部分加密生成。 注意,不要在JWT的payload或header中放置敏感信息,除非它们是加密的。下图为官网的截图: 优缺点 cookie: 优点: 结构简单。cookie是一种基于文本的轻量结构,包含简单的键值对。 数据持久。虽然客户端计算机上cookie的持续时间取决于客户端上的cookie过期处理和用户干预

漫谈挖洞【转载】

天大地大妈咪最大 提交于 2019-11-29 03:14:14
原作者: humourkyo 原文链接: https://bbs.pediy.com/thread-254186.htm 转自: 看雪社区 这里只谈如何发现漏洞,如何快速的发现漏洞。 总有一种感觉,最产生价值的部分就是发现漏洞,就像是猎人在森林里捕猎到一头野味,如何宰杀,烹煮等等,一般都有自己的一套,哪怕自己实在不会也可以请教别人教你怎么做,只是需要花费点时间,就算没有自动化的屠宰、烹饪工具,手工来慢慢的剥皮割肉下锅炖煮,吃到嘴里也只是时间问题。但直接请别人帮你在茫茫的森林里给你猎杀野味,恐怕能答应的人不多,还不如直接让他送你好了。 当然漏洞也是一样的,一般请教别人的也都是找到漏洞之后如何利用的问题,比如,sql注入如何绕过waf,webshell下如何提权,内网环境下如何渗透进目标等等。实在不行搜索引擎,github等一顿搜大多情况也都能解决问题。 而拿着一堆目标直接甩给朋友说:帮我日个站吧,如果每个站不对应价格的话,一般都不会有回应。考虑到现在站实在比较难日,(云waf,CDN,硬防,各种云安全服务器、安全狗、云锁、D盾、护卫神等等)哪怕都标明了价格一般情况也不会有回应。 朋友一般都会想你自己都过了一遍了,好日的站都日下来,不好日的丢给我,我才不浪费时间看呢,甚至连打开都不会打开看一下的。 至于拿着众测或者src的目标让朋友免费帮忙找漏洞更稀有了吧

MySQL十大报错函数

核能气质少年 提交于 2019-11-29 02:50:40
1.Floor() round() 遵循四舍五入把原值转化为指定小数位数,如:round(1.45,0) = 1;round(1.55,0)=2 floor()向下舍入为指定小数位数 如:floor(1.45,0)= 1;floor(1.55,0) = 1 ceiling()向上舍入为指定小数位数 如:ceiling(1.45,0) = 2;ceiling(1.55,0)=2 floor(x),返回小于或等于x的最大整数。 x表示concat(database(),rand(0)*2),rand(0)以0为随机种子产生0-1之间的随机数,*2产生0-2之间的随机数。 报错原因:主键重复,必需:count()、rand()、group by payload: id=1 and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a); 2.ExtractValue() ExtractValue(xml_frag, xpath_expr) ExtractValue() 接受两个字符串参数,一个XML标记片段 xml_frag 和一个XPath表达式 xpath_expr (也称为 定位器); 它返回 CDATA

ios 推送消息 php推送

China☆狼群 提交于 2019-11-29 02:29:39
今天花了好几个小时做这个推送,前几次一直是失败,没有做对,网上看过很多教程,有几个地方要值得注意。 这篇blog写得比较清楚: http://zxs19861202.iteye.com/blog/1532460 http://www.mobiledevor.com/post/100.html 1. deviceToken 是从ios 中得到 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken { NSLog(@"regisger success:%@", pToken); //注册成功,将deviceToken保存到应用服务器数据库中 } 2. 步骤 1. 登录 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action ) 然后点击 App IDs 2. 创建一个 Apple ID 。通配符 ID 不能用于推送通知服务。如, com.itotem.iphone 3. 点击Apple ID旁的“Configure”,根据“向导” 的步骤生成一个签名上传,然后下载生成的许可证

jwt token 验证

痞子三分冷 提交于 2019-11-29 01:50:38
JWT简介 JWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。 基于session的登录认证 在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 图片来源于网络博客 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多服务会面临的session共享问题,随着用户量的增多,开销就会越大。而JWT不是这样的,只需要服务端生成token,客户端保存这个token,每次请求携带这个token,服务端认证解析就可。 图片来源于网络博客 JWT生成Token后的样子 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvcmciOiLku4rml6XlpLTmnaEiLCJuYW1lIjoiRnJlZeeggeWGnCIsImV4cCI6MTUxNDM1NjEwMywiaWF0IjoxNTE0MzU2MDQzLCJhZ2UiOiIyOCJ9.49UF72vSkj

JWT -- JSON WEB TOKEN

旧时模样 提交于 2019-11-29 01:50:30
JWT -- JSON WEB TOKEN 什么是JWT Json web token (JWT)? 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519). 该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。 JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源, 也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 基于token的鉴权机制 基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。 这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。 流程上是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token, 并在每次请求时附送上这个token值 服务端验证token值,并返回数据。这个token必须要在每次请求时传递给服务端。 JWT的构成 第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature). header jwt的头部 承载两部分信息: 声明类型

Metersploit系统参数说明

血红的双手。 提交于 2019-11-29 00:24:24
Back参数 Back参数主要⽤用于返回。⽐比如你进⼊入了了某⼀一个漏漏洞洞模块的设置,但是你想再重新选择一个漏漏洞洞模块,那么就需要⽤用到back参数。 这张图说明,才开始我使用了ms08_067_netapi的利用模块,之后使⽤了back参数返回。 Banner参数 这个主要是查看metasploit的版本信息,利利⽤用模块数量量、payload数量量等等。 Info参数 这个参数可以查看所在模块的信息,包括选项、利用条件、漏洞作者、可以利用的payload等。 这个info有两种⽤用法,第一种是直接在当前的⾥面模块下输入info,然后回车查看当前模块的信息。 第⼆种是输入info后,再在后⾯输入模块的编号,然后回⻋车查看模块信息 Jobs参数 这个参数可以查看目前msfconsole上存在哪些任务,并且可以选择结束一些不需要的任务。如果要查看更详细的jobs选项,那么可以直接输入“jobs -h”进行查看。 Kill参数 这个参数主要是配合jobs参数进⾏使用。如果你使用jobs参数后发现了一些不要的任务,那么使用kill参数就可以终⽌一些不需要的进程。一般都是kill <jobs编号>。 Load参数 这个参数可以从metasploit的plug库⾥面加载一些插件。 Unload参数 这个参数可以终⽌止你已经启动的插件。 Search参数 当你使

python requests库的简单使用

老子叫甜甜 提交于 2019-11-29 00:19:22
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但比urllib,urllib2更加使用简单。 1. requests库的安装 在你的终端中运行pip安装命令即可 pip install requests    使用源码安装 git clone git://github.com/kennethreitz/requests.git python setup.py install    2. requests发送请求 使用 Requests 发送网络请求 import requests req0 = requests.get("https://www.baidu.com") print (req0)    # 发送一个 HTTP POST 请求 req1 = requests.post("https://http://httpbin.org/post")    # 发送PUT,DELETE,HEAD 以及 OPTIONS 请求 requests.put("http://http://httpbin.org/put") requests.delete("http://http://httpbin.org/delete") requests.head("http://http://httpbin.org/get") requests.options