lucy

Pikachu漏洞练习平台实验——CSRF(三)

感情迁移 提交于 2020-02-09 05:57:19
概述 CSRF 是 Cross Site Request Forgery 的 简称,中文名为 跨域请求伪造 在CSRF的攻击场景中, 攻击者会伪造一个请求(一般是一个链接) 然后欺骗目标用户进行点击,用户一旦点击了这个请求,这个攻击也就完成了 所以CSRF攻击也被称为“one click”攻击 攻击场景例子 lucy想要在购物网站上 修改购物地址 ,这个操作是lucy通过浏览器向后端发送了请求。 这个请求里面包含了lucy的新有货地址,如果是通过GET提交的,那么会以URL传参的方式的方式将新的地址提交给后台,类似上图中的URL, 相当于点了链接就能修改个人信息 。 如果这时候攻击者想要修改lucy的信息怎么办?那么他需要取得lucy的账号, 获得登录权限 。这时候他可以将修改个人信息的 请求伪造 一下,构造类似下图中的URL,引诱lucy在登录状态下进行点击,这样攻击就成功了。 CSRF攻击需要条件 ① 目标网站没有对修改个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造 因此,判断一个网站有没有CSRF漏洞,其实就是判断对关键信息(密码等)的操作(增删改)是否容易被伪造 ② lucy点击伪造的请求链接时有登录状态(已经登陆了目标网站),如果lucy没有登录,那么即便lucy点击了链接也没有作用 从CSRF的利用条件来看,CSRF的利用难度会大一些

数组 Array

心已入冬 提交于 2020-02-04 00:29:15
1.数组的概念及定义   数组:Array   定义:数组是一个有序的数据集合。 2.数组的创建方式 var arr1 = [1,2,3]; //字面量创建方式 var arr2 = new Array(1,2,3) //构造函数方式   注意:当只有一个数据时,两种创建方式的不同。   var arr1 = [5] //表示有一个数组元素5   var arr2 = new Array(5) //表示有5个数组元素,值全部为undefined 3.如何操作数组 arr.push("hello") //在数组的末尾添加元素 arr.unshift("first") //在数组的开始添加元素 arr.pop() //删除最后一位元素 arr.shift() //删除第一个元素 arr.splice(n,m,a......) //从第n个元素开始删除,删除m个,删除位置添加元素a(可选) arr.slice(n,m) //截取从第n个到第m-1个 返回到一个新数组 arr.sort(fn) //对数组进行排序,fn为一个函数,可选; //当数组内的元素为字符型数字,默认排序已经无法满足,需要手动处理; //如function fn(n,m){return n-m} 利用隐式转换将字符型转换成数值型 操作数组的一些方法 1.concat() 功能: 用于连接两个或多个数组

JavaScript的类和继承

只谈情不闲聊 提交于 2020-01-24 15:04:46
本文参考了两本书: <JavaScript: The Good Parts>(JSTGP) by Douglas Crockford <JavaScript Web Application> (JSWA) by maccman 如何在JavaScript中使用”类“,W3CSHOOL提供了一个貌似不错的解决方案,也就是所谓的PseduoClassical范式: var Person = function (opt) { opt = opt ? opt : {}; this.name = opt.name; }; Person.prototype.hello = function() { console.log("hello, I'm " + this.name); }; var Programmer = function (opt) { opt = opt ? opt : {}; Person.apply(this, arguments); this.language = opt.language; }; Programmer.prototype = new Person(); Programmer.prototype.coding = function() { console.log("I'm coding with " + this.language); }; var lucy

菜鸟求解答:python continue语句改一行代码,怎么就报错了?

最后都变了- 提交于 2020-01-19 08:30:15
#!usr/bin/python running=True while running: guess=raw_input(“input a lucy string,or you will repeat in this while loop:”) if guess==“quit”: print(“you will quit”) break else: continue print(“repeat input:”) print(“game over”) [root@localhost ~]# python pycontinuetest.py input a lucy string,or you will repeat in this while loop:a input a lucy string,or you will repeat in this while loop:a input a lucy string,or you will repeat in this while loop:a input a lucy string,or you will repeat in this while loop:quit you will quit game over #!usr/bin/python running=True while running: guess=raw_input(

JDK8新特性(四):Optional 类的使用

≡放荡痞女 提交于 2020-01-12 14:48:51
Optional类的使用 JDK8以前,编写代码,通常会出现 NullPointerException (空指针异常),通常情况下我们都是通过 if ... else... 来对对象进行为空判断,然后再进行逻辑处理,代码写起来也比较冗余。 JDK8新增了Optional类,使用该类可以避免我们对空指针的检查,使代码看起来比较优雅。 1.Optional类介绍 JDK8 新增了 Optional 类, Optional 类是一个没有子类的工具类。我们可以把 Optional 类看作是一个容器。这个容器它有两种情况:①要么有值 ②要么为null。如下图所示: 2.以前对 null 的处理方式 public class Demo { public static void main(String[] args) { Person person = new Person("Lucy",18,"BeiJing"); if(person != null){ System.out.println(person); }else{ System.out.println("person为空"); } } } 3.创建 Optional 类对象的方式 //创建 Optional 类,共有如下 3 种方式: //1.创建一个 Optional 实例 Optional.of(T t); //2.创建一个空的

MySQL 5.7 使用原生JSON类型

吃可爱长大的小学妹 提交于 2019-12-26 10:54:06
首先回顾一下JSON的语法规则: 数据在键值对中, 数据由逗号分隔, 花括号保存对象, 方括号保存数组。 按照最简单的形式,可以用下面的JSON表示: {"NAME": "Brett", "email": "brett@xxx.com"} 如何在MySQL中使用JSON类型: 新建user表,设置lastlogininfo列为JSON类型。 mysql> CREATE TABLE user(id INT PRIMARY KEY, name VARCHAR(20) , lastlogininfo JSON); Query OK, 0 rows affected (0.27 sec) 向user表插入普通数据与json数据。mysql会对插入的数据进行JSON格式检查,确保其符合JSON格式,若插的是不合法的数据,会出现Invalid JSON text错误。 mysql> INSERT INTO user VALUES(1 ,"lucy",'{"time":"2015-01-01 13:00:00","ip":" 192.168.1.1","result":"fail"}'); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO user VALUES(2 ,"bobo",'{"time":"2015-10-07 06:44

动态规划—0-1背包问题(最易理解的讲解)

断了今生、忘了曾经 提交于 2019-12-08 11:29:59
0 -1 背包问题是最广为人知的动态规划问题之一,拥有很多变形。尽管在理解之后并不难写出程序,但初学者往往需要较多的时间才能掌握它。小编写这篇文章力争做到用通俗易懂的语言,最少的公式把 0-1 背包问题讲解透彻。 喜欢的小朋友,请与我多多交流哦 ~~~~ 请允许我从一则故事说起………… 话说 Lucy 带着她的亲友团去沙漠寻求宝藏,经过几天几夜的长途跋涉,终于在沙漠的那一边发现了一堆个大无比、闪闪发光的钻石,一共有 n 个。可惜的是他们身上只有一个能装钻石的背包,背包的容量为 W 。 Lucy 兴奋之余,在一堆钻石中挑出突出的钻石编号排列: 0,1,2,3 ……, n-1 。第 i 个宝石对应的体积和价值分别为 w[i] 和 v[i] 。排好后 Lucy 开始思考,和向他的亲友团求助:背包总共只能装下体积为 W 的东西,那我要装下哪些钻石才能使我们获得最大的利益呢? “很简单,用动态规划呀,那样我们就能获得最大的利益了” Bill 斩钉截铁的回答,他边说着边用木棍在沙漠上笔画着。 PS : 以上故事情节纯属虚构,若有模仿者,小编概不负责哦!请读者细细听下文讲解。 说时迟那时快, Bill 将挑出的 5 个钻石编号钻石,假设背包的容量范围在 [0,17] ,问题示例 物品的价值和重量如下表 现在 Bill 考考读者 , 通过可放和不可放表,是不是就能罗列出在背包容量值固定

DEVOPS技术实践_22:根据参数传入条件控制执行不同stage

╄→гoц情女王★ 提交于 2019-12-05 05:04:29
前面学习了参数的传递和调用,下面研究一下根据参数作为条件执行不同的stage 使用叫when 和expression控制某一个stage的运行, 运行场景例如写了多个stage,这个pipeline脚本执行执行冒烟测试,和集成测试。有时候,希望快速执行冒烟测试,想根据结果看看,不一定一上来就执行集成测试。为了达到这种控制效果,我们就需要使用逻辑控制。在pipeline中就使用when 和expression两个命令。例如,如果json文件中冒烟测试变量为true,我就只执行冒烟测试的stage,其他和冒烟测试无关的stage我就不去执行。如果冒烟测试变量值为false,也就是默认要跑集成测试(不跑冒烟测试)。下面分两个类型测试就好 1 修改json文件 { "NAME":"Lucy", "AGE":"18", "PHONE_NUMBER":"13912345678", "ADDRESS":"Haidian Beijing", "EMAIL":"lucy@demo.com", "GENDER":"male", "SMOKE":"false", "IS_MARRY":"false" } test.json文件基础上加了一个变量 SMOKE, 默认值是false。 2 使用的jenkinsfile文件 import hudson.model.*; pipeline{ agent any

JavaScript中的数组Array

廉价感情. 提交于 2019-12-03 05:30:47
抄自: https://www.jianshu.com/p/7e160067a06c js中数组的方法种类众多,有ES5之前版本中存在的,ES5新增,ES6新增等;并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中原型上的方法。 一、创建数组的方式 1. 字面量方式 var arr1 = []; //创建一个空数组 var arr2 = [5]; //创建一个具有单个元素的数组 var arr3 = [5,6,7]; //创建一个具有多个元素的数组 2. 构造函数方式 var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(5); //创建一个长度为5,值为空的数组 var arr3 = new Array(5,6,7); //创建一个具有多个元素的数组 二、数组方法 //方法名 对应的版本 功能 原数组是否修改 concat() ES5- 合并数组,并返回合并之后的数据 n join() ES5- 使用分隔符,将数组转为字符串并返回 n pop() ES5- 删除最后一位,并返回删除的数据 y shift() ES5- 删除第一位,并返回删除的数据 y unshift() ES5- 在第一位新增一或多个数据,返回长度 y push() ES5- 在最后一位新增一或多个数据,返回长度 y

R reshape2 dcast: transform data

匿名 (未验证) 提交于 2019-12-03 02:38:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: How can I transform data X to Y as in X = data.frame( ID = c(1,1,1,2,2), NAME = c("MIKE","MIKE","MIKE","LUCY","LUCY"), SEX = c("MALE","MALE","MALE","FEMALE","FEMALE"), TEST = c(1,2,3,1,2), SCORE = c(70,80,90,65,75) ) Y = data.frame( ID = c(1,2), NAME = c("MIKE","LUCY"), SEX = c("MALE","FEMALE"), TEST_1 =c(70,65), TEST_2 =c(80,75), TEST_3 =c(90,NA) ) The dcast function in reshape2 seems to work but it can not include other columns in the data like ID, NAME and SEX in the example above. Assuming all other columns by a ID column are consistent,