test

Laravel5.7反序列化RCE漏洞分析

坚强是说给别人听的谎言 提交于 2020-03-06 16:45:54
前言 以前只是粗略的知道反序列化漏洞的原理,最近在学习Laravel框架的时候正好想起以前收藏的一篇反序列化RCE漏洞,借此机会跟着学习一下POP链的挖掘 简介 Laravel是一个使用广泛并且优秀的PHP框架。这次挖掘的漏洞Laravel5.7版本,该漏洞需要对框架进行二次开发才能触发该漏洞 本地环境 Laravel5.7.28 Wamper64+PHP7.3.5(PHP >= 7.1.3) 环境准备 使用composer部署Laravel项目 创建一个名为laravel的Laravel项目 composer create-project laravel/laravel=5.7.* --prefer-dist ./ Laravel框架为单入口,入口文件为 {安装目录}/public/index.php ,使用apache部署后访问入口文件显示 Laravel欢迎界面 即安装成功(或者使用命令 php artisan serve 开启临时的开发环境的服务器进行访问) 配置路由以及控制器 Laravel所有的用户请求都由路由来进行控制。我们添加一条如下的路由 <?php use \ Illuminate \ Support \ Facades \ Route ; /* |---------------------------------------------------------

优秀js开源框架-jQuery使用手册(1)

不羁的心 提交于 2020-03-06 12:30:36
对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jQuery可以帮你达到目的! 下载地址:http://jquery.com 下载完成后先加载到文档中,然后我们来看个简单的例子! <script type="text/javascript" src="scripts/jquery-1.2.3.js"></script> <script language="javascript" type="text/javascript"> $(document).ready(function(){ $("a").click(function() { alert("Hello world!"); }); }); </script> 上边的效果是点击文档中所有a标签时将弹出对话框,$("a") 是一个jQuery选择器,$本身表示一个jQuery类,所有$()是构造一个jQuery对象,click()是这个对象的方法,同理$(document)也是一个jQuery对象,ready(fn)是$(document)的方法,表示当document全部下载完毕时执行函数。 在进行下面内容之前我还要说明一点$("p")和$("#p")的区别,$("p")表示取所有p标签(<p></p>)的元素,$("#p")表示取id为"p"(<span id="p"><

jQuery使用手册之核心部分(2)

巧了我就是萌 提交于 2020-03-06 12:29:31
$(expr) 说明:该函数可以通过css选择器,Xpath或html代码来匹配目标元素,所有的jQuery操作都以此为基础 参数:expr:字符串,一个查询表达式或一段html字符串 例子: 未执行jQuery前: <p>one</p> <div> <p>two</p> </div> <p>three</p> <a href="#" id="test" onClick="jq()" >jQuery</a> jQuery代码及功能: function jq(){ alert($("div > p").html()); } 运行:当点击id为test的元素时,弹出对话框文字为two,即div标签下p元素的内容 function jq(){ $("<div><p>Hello</p></div>").appendTo("body"); } 运行:当点击id为test的元素时,向body中添加“<div><p>Hello</p></div>” $(elem) 说明:限制jQuery作用于一个特定的dom元素,这个函数也接受xml文档和windows对象 参数: elem:通过jQuery对象压缩的DOM元素 例子: 未执行jQuery前: <p>one</p> <div> <p>two</p> </div><p>three</p> <a href="#" id="test" onClick

jQuery 使用手册(一)

跟風遠走 提交于 2020-03-06 12:29:15
一:核心部分 $(expr) 说明:该函数可以通过css选择器,Xpath或html代码来匹配目标元素,所有的jQuery操作都以此为基础 参数:expr:字符串,一个查询表达式或一段html字符串 例子: 未执行jQuery前: <p>one</p> <div> <p>two</p> </div> <p>three</p> <a href="#" id="test" onClick="jq()" >jQuery</a> jQuery代码及功能: function jq(){ alert($("div > p").html()); } 运行:当点击id为test的元素时,弹出对话框文字为two,即div标签下p元素的内容 function jq(){ $("<div><p>Hello</p></div>").appendTo("body"); } 运行:当点击id为test的元素时,向body中添加“<div><p>Hello</p></div>” $(elem) 说明:限制jQuery作用于一个特定的dom元素,这个函数也接受xml文档和windows对象 参数: elem:通过jQuery对象压缩的DOM元素 例子: 未执行jQuery前: <p>one</p> <div> <p>two</p> </div><p>three</p> <a href="#" id="test"

量化投资学习笔记37——《Python机器学习应用》课程笔记10

眉间皱痕 提交于 2020-03-06 11:55:00
用KNN算法来进行数字识别,还是用sklearn自带的digits数据集。 coding:utf-8 KNN算法实现手写识别 from sklearn import neighbors from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report import matplotlib.pyplot as plt if name == " main ": 加载数据 digits = load_digits() x_data = digits.data y_data = digits.target print(x_data.shape) print(y_data.shape) 划分训练测试集 x_train, x_test, y_train, y_test = train_test_split(x_data, y_data) 训练 knn = neighbors.KNeighborsClassifier(algorithm = "kd_tree", n_neighbors = 3) knn.fit(x_train, y_train) 准确率评估

主键索引和唯一索引的区别

北战南征 提交于 2020-03-06 10:29:50
-- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 -- 创建一张仅包含主键和唯一索引的表 CREATE TABLE test (PrimaryKey VARCHAR2(20), UniqueKey VARCHAR2(20) ); -- 分别创建主键和唯一索引,语法不同 ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey); CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey); -- 在 USER_INDEXES 中可以看到两个索引名称 SELECT table_name,table_type,index_name,index_type,uniqueness FROM USER_INDEXES WHERE

Day1:MYSQL创建数据库

北城以北 提交于 2020-03-06 10:13:56
创建数据库基本语法 在 MySQL中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>]; [ ] 中的内容是可选的。语法说明如下: <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。 IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。 [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。 [DEFAULT] COLLATE:指定字符集的默认校对规则。 MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。

统计 Django 项目的测试覆盖率

本秂侑毒 提交于 2020-03-06 09:09:07
作者: HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试。现在我们想知道的是究竟测试效果怎么样呢?测试充分吗?测试全面吗?还有没有没有测到的地方呢? 单凭肉眼观察难以回答上面的问题,接下来我们就借助 Coverage.py ,从代码覆盖率的角度来检测一下我们的测试效果究竟如何。 Coverage.py (以下简称 Coverage)是 Python 测试界最为流行的一个库之一,用来统计测试覆盖率。测试覆盖率可以从一个角度衡量代码的质量,覆盖率越高,说明测试越充分,代码出现 bug 的几率也就越小。当然需要注意的是,测试覆盖率仅仅只是衡量代码质量的一个角度,即使是 100% 的覆盖率也不能说代码就是完美的,没有 bug 的。 安装 Coverage 要使用 Coverage,首先当然是安装它: $ pipenv install coverage --dev 因为只在开发时才用得到,所以使用 Pipenv 安装时加 --dev 选项将其标记为开发时的依赖库。 简单配置 Coverage Coverage 支持很多配置选项,为了方便,通常将这些配置写在名为 .coveragerc 的文件中,Coverage 运行时会从项目根目录读取这个配置文件

Linux查看日志常用命令

不想你离开。 提交于 2020-03-06 08:49:50
1.查看日志常用命令 tail: -n 是显示行号;相当于nl命令;例子如下: tail -100f test.log 实时监控100行日志 tail -n 10 test.log 查询日志尾部最后10行的日志; tail -n +10 test.log 查询10行之后的所有日志; head: 跟tail是相反的,tail是看后多少行日志;例子如下: head -n 10 test.log 查询日志文件中的头10行日志; head -n -10 test.log 查询日志文件除了最后10行的其他所有日志; cat: tac是倒序查看,是cat单词反写;例子如下: cat -n test.log |grep "debug" 查询关键字的日志 2. 应用场景一:按行号查看---过滤出关键字附近的日志 1)cat -n test.log |grep "debug" 得到关键日志的行号 2)cat -n test.log |tail -n +92|head -n 20 选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志: tail -n +92表示查询92行之后的日志 head -n 20 则表示在前面的查询结果里再查前20条记录 3. 应用场景二:根据日期查询日志 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p

Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) A B C D 暴力 水 二分 几何

懵懂的女人 提交于 2020-03-06 06:21:05
A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Tonio has a keyboard with only two letters, " V" and " K". One day, he has typed out a string s with only these two letters. He really likes it when the string " VK" appears, so he wishes to change at most one letter in the string (or do no changes) to maximize the number of occurrences of that string. Compute the maximum number of times " VK" can appear as a substring (i. e. a letter " K" right after a letter " V") in the resulting string. Input The first line will