草庐IT

PHP反序列化漏洞(最全面最详细有例题)

文章目录PHP反序列化漏洞一.类与对象二.反序列化基础知识三.魔术方法的构造和折构__construct()__destruct()__sleep()__wakeup()错误调用魔术方法:__callStatic()__get()__set()__isset()__unset()__clone()魔术方法小总结反序列化漏洞的成因:四.pop链构造POP链POC链反推法:五.字符串逃逸六.__wakeup魔术方法绕过漏洞产生原因:__wakeup绕过简单例题:/[oc]:\d+:/i七.引用的利用方法例题八.SESSION反序列化漏洞session的不同处理器的不同储存格式第一种格式:第二种格式

数据结构例题代码及其讲解-递归与树

树​树的很多题目中都包含递归的思想递归递归包括递归边界以及递归式即:往下递,往上归递归写法的特点:写起来代码较短,但是时间复杂度较高01利用递归求解n的阶乘。intFunc(intn){ if(n==0){ return1; } else{ returnn*Func(n-1); }}02斐波那契数列是满足F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)的数列,数列的前几项为1,1,2,3,5,8,13,21…。写出求解斐波那契数列第n项的程序。intFbnq(intn){ if(n==0||n==1){ return1; } else{ returnFbnq(

信息学奥赛一本通 1341:【例题】一笔画问题

【题目链接】ybt1341:【例题】一笔画问题【题目考点】1.图论:欧拉回路求解欧拉回路使用Hierholzer算法复杂度:O(V+E)O(V+E)O(V+E)【解题思路】无向图有欧拉回路的条件:所有顶点的度都是偶数。无向图有欧拉路径的条件:有两个顶点的度是奇数,其余顶点的度都是偶数。该题默认一定有欧拉路径或欧拉回路。遍历选择起始顶点,如果v的度为奇数,那么选择该顶点为起始顶点。否则起始顶点默认为1号顶点。使用Hierholzer算法可以在O(V+E)O(V+E)O(V+E)的时间复杂度内求出欧拉回路。顶点数n最大为100,可以使用邻接矩阵或邻接表解决。【题解代码】解法1:邻接矩阵#inclu

【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

 目录一、^是什么(^称为异或)二、^的规律(特点)三、可利用^秒杀的常见例题(重点)1、消失的数字 2、不一样的人生密码3、交换两个数(不能创建中间变量)4、找出只出现一个的两个数字一、^是什么(^称为异或)是一种操作符,针对二进制异或而言的,两个数对应的二进制位相同,异或结果为0,不同,异或结果为1。例如:1^21的二进制位:0000000000000000000000000000000012的二进制位:000000000000000000000000000000010 1^2异或后: 000000000000000000000000000000011即为3异或它在很多题型中都会用的到,我

CTF例题合集(1)

例题1(修改账号提交):nctf.nuptzj.cn/web13/index.php?user1=Y3RmdXNIcg==这是一个修改密码的题目。在前端属性中,把账号那个输入框的readonly属性删除掉。此时账号就可以修改了然后burp抓包,送到repeat中。包中post头里有user1=XXX这个部分是明显的base64加密。解密后发现这是ctfusHr,也就是用户名的二次校验所以解密后,构造admin再编码,把编码送回去,账号也同样改成想修改的admin。这样也就成功修改账号了!切记账号和新密码都修改成admin密码正常写即可。账号可以抓包破除限制,也可以前端删除限制。但是要破除二次校

c语言经典例题讲解(输出菱形,喝汽水问题)

目录一、输出菱形二、喝汽水问题方法1:一步一步来  方法二:直接套公式 一、输出菱形输出类似于下图的菱形:  通过分析:1、先分为上下两部分输出          2.在输出前先输出空格         3.找规律进行输出可知,可令上半部分line行,下半部分便是line-1行。找空格的规律:当line为7时,第一行有6个空格,第二行有5个……第七行没有起始点便是line-1,终止为0找*规律: 当line为7时,第一行有1个*,第二行有3个……第七行有13个规律是:line*2-1intmain(){ intline=0; scanf("%d",&line); //开始输出上半部分 for(

DFS深搜算法(详解+例题)

DFS是英文Depth-First-Search的缩写,意思是深度优先搜索。什么是深度优先搜索呢?顾名思义,就是往深处遍历。举个小例子:假设你现在要挖宝藏,你肯定会往下挖对吧。当你挖到地下10米时,探宝器出现了一个故障。一会儿显示往右下挖,一会儿显示往左下挖。你只好先往左下挖。挖啊挖,不幸的是你挖到了岩石,不能在往下挖了。你只好往回爬,爬到那个分叉口,这次你往右下挖,果然一路顺畅,挖到了宝藏!这是你挖宝的路线:                  这是dfs的路线:             这下你应该懂dfs的含义了吧。对了你爬回去的动作,在dfs里叫作回溯。那dfs有没有框架呢?有是有的,不像

一个概率论例题引发的思考

浙江大学版《概率论与数理统计》一书,第13章第1节例2:这个解释和模型比较简单易懂。接下来,第13章第2节的例2也跟此模型相关:在我自己的理解中,此题的解法跟上一个题目一样,其概率如下面的二维矩阵,第二级传输也就是n为2,矩阵一共有4中可能的概率,求其期望值,即求所有概率及值之积的和。{pnqnqnpn}\begin{Bmatrix}p^n&q^n\\q^n&p^n\end{Bmatrix}{pnqn​qnpn​}然而,仔细考虑之后发现不妥。因为最后结果的概率,这样计算不太合适,但是又没有发现更合理的理论和方法。继续搜看教材,看到这一节的如下论述:似乎抓到了什么,但是又特别模糊。再看一下C-K

数据结构之队列详解(包含例题)

一、队列的概念队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。二、模拟实现顺序队列我们可以用单链表模拟实现顺序队列。队列采用的FIFO(firstinfirstout),新元素(等待进入队列的元素)总是被插入到链表的尾部(对应单链表的尾插),而读取的时候总是从链表的头部开始读取。每次读取一个元素,释放一个元素(对应单链表的头删)。对应的接口注意又提供一种避免使用二级指针的方法,创建一个结构体变量,里面存储结点,当我们想要改变结构体里

手撕数据结构之栈+例题

目录一、栈的概念及结构二、栈的头文件及基本框架三、接口实现1、对栈的初始化 2、栈的销毁3、入栈操作4、出栈操作 5、判断栈是否为空6、返回栈顶元素7、遍历栈四、有效的括号-力扣(LeetCode)题目描述: 思路:代码:一、栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。如同子弹夹,我们进行添子弹和出子弹,很形象。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。 接下来,我们以数组栈的形式去模拟。二、栈的头文件及基本框架#p