草庐IT

2021 虎符杯hate num 注入题

前言今天遇到个有意思的SQL盲注,花了不少功夫,也学到了新姿势,遂记录下来以备后续碰到相同场景使用。题目这是2021虎符杯的一道web题,有一个目标站点且附带了源码。源码内容包括:主要逻辑在login.php与config.php,删去多余代码,主要功能在登陆上。前端登录表单会发送给login.php处理:然后所有的post参数会交给config.php中的array_waf去做处理.array_waf是一个递归检测的waf,检测是否包含sql_waf和num_waf在内的规则,符合规则直接退出。经过检测后会进入config.php中的login函数进行数据库查询。可以看到login函数直接将

2021 虎符杯hate num 注入题

前言今天遇到个有意思的SQL盲注,花了不少功夫,也学到了新姿势,遂记录下来以备后续碰到相同场景使用。题目这是2021虎符杯的一道web题,有一个目标站点且附带了源码。源码内容包括:主要逻辑在login.php与config.php,删去多余代码,主要功能在登陆上。前端登录表单会发送给login.php处理:然后所有的post参数会交给config.php中的array_waf去做处理.array_waf是一个递归检测的waf,检测是否包含sql_waf和num_waf在内的规则,符合规则直接退出。经过检测后会进入config.php中的login函数进行数据库查询。可以看到login函数直接将

[牛客BM49&LeetCode227]基本计算器-双栈递归方法-最易理解

双栈+递归方法比目前官网题解更容易理解且简单的方法。双栈:一个栈用于存放数字,一个用于存放符号。递归:括号内表达式求值作为返回值,减少处理括号时边界条件的难度。基本思想:参考人计算的思维,如果[后入栈的运算符优先级]大于[先入栈的运算符优先级],那么进行计算。奇怪的细节:1.考虑字符串开始就有可能出现负号和正号,因此在两个栈的开头分别插入'0'、'-'或'0'、'+'。2.int相加时中间结果可能溢出,使用longlong保存结果。另外:这里使用递归和传统递归模板不同,传统模板如下:=1=if(终止条件)return;=2=[向下传递时]逻辑处理(可能有,也可能没有,具体问题具体分析)=3=递

[牛客BM49&LeetCode227]基本计算器-双栈递归方法-最易理解

双栈+递归方法比目前官网题解更容易理解且简单的方法。双栈:一个栈用于存放数字,一个用于存放符号。递归:括号内表达式求值作为返回值,减少处理括号时边界条件的难度。基本思想:参考人计算的思维,如果[后入栈的运算符优先级]大于[先入栈的运算符优先级],那么进行计算。奇怪的细节:1.考虑字符串开始就有可能出现负号和正号,因此在两个栈的开头分别插入'0'、'-'或'0'、'+'。2.int相加时中间结果可能溢出,使用longlong保存结果。另外:这里使用递归和传统递归模板不同,传统模板如下:=1=if(终止条件)return;=2=[向下传递时]逻辑处理(可能有,也可能没有,具体问题具体分析)=3=递

分享实用小工具:JAVA版本位运算工具类

将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义或过多的表字段,同时也能在一些复杂的组合判断场景下利用位与、位或、异或等位运算实现简单高效的逻辑判断如下是JAVA版位运算工具类,没啥技术含量,主要是运用:位移、位与、位或、异或运算,如果对位运算操作不清楚的可以阅读我之前的文章:简简单单学会C#位运算-梦在旅途-博客园(cnblogs.com)--虽是C#,其实原理都一样,与语言无关。/***@authorzuowenjun*@description位运算工具*用途:将二进制数中的每位数字1或0代表着某种开关标记,1为是

浅谈PHP设计模式的策略模式

简介:策略模式又叫做政策模式,用于如何组织和调用算法的,是属于行为型模式的一种。策略模式需要三个角色构成:Context封装角色:也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色:通常为接口,指定规则。ConcreteStrategy具体策略角色:实现抽象策略中的操作,该类含有具体的算法。适用场景:优化单元测试,每个测试都有自己独特的算法,可利用策略模式自定义实现。实现同一类问题的不同解决方案的场景。优点:算法可以通过参数自由切换。方便扩展,增加策略只需要实现接口就行了。缺点:增加类数量。其它:与工厂模式的对比:工厂模式

分享实用小工具:JAVA版本位运算工具类

将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义或过多的表字段,同时也能在一些复杂的组合判断场景下利用位与、位或、异或等位运算实现简单高效的逻辑判断如下是JAVA版位运算工具类,没啥技术含量,主要是运用:位移、位与、位或、异或运算,如果对位运算操作不清楚的可以阅读我之前的文章:简简单单学会C#位运算-梦在旅途-博客园(cnblogs.com)--虽是C#,其实原理都一样,与语言无关。/***@authorzuowenjun*@description位运算工具*用途:将二进制数中的每位数字1或0代表着某种开关标记,1为是

浅谈PHP设计模式的策略模式

简介:策略模式又叫做政策模式,用于如何组织和调用算法的,是属于行为型模式的一种。策略模式需要三个角色构成:Context封装角色:也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色:通常为接口,指定规则。ConcreteStrategy具体策略角色:实现抽象策略中的操作,该类含有具体的算法。适用场景:优化单元测试,每个测试都有自己独特的算法,可利用策略模式自定义实现。实现同一类问题的不同解决方案的场景。优点:算法可以通过参数自由切换。方便扩展,增加策略只需要实现接口就行了。缺点:增加类数量。其它:与工厂模式的对比:工厂模式

JavaScript数值计算时精度问题处理

js精度问题当使用JavaScript进行数值计算时,会面临一些精度问题,这些问题可能会导致不正确的结果。以下是一些常见的奇奇怪怪的js数据精度问题:1.浮点数精度问题在JS中,浮点数的精度有限。例如:0.1+0.2//结果为0.3000000000000000423.327*100//结果为2332.7000000000003这个结果显然不符合我们的期望。因为这是由于浮点数本身就无法表示0.1和0.2精确值。解决方案:可以使用toFixed方法将其转换为字符串保留特定位数的小数,或者使用Big.js库中的Big对象。2.整数运算超出范围在JS中,整数运算的范围为-2^53~2^53。当运算结