考点
PHP弱类型
<?php
highlight_file(__FILE__);
$key1 = 0;
$key2 = 0;
$a = $_GET['a'];
$b = $_GET['b'];
if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){
if(isset($b) && '8b184b' === substr(md5($b),-6,6)){
$key1 = 1;
}else{
die("Emmm...再想想");
}
}else{
die("Emmm...");
}
$c=(array)json_decode(@$_GET['c']);
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){
if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){
$d = array_search("DGGJ", $c["n"]);
$d === false?die("no..."):NULL;
foreach($c["n"] as $key=>$val){
$val==="DGGJ"?die("no......"):NULL;
}
$key2 = 1;
}else{
die("no hack");
}
}else{
die("no");
}
if($key1 && $key2){
include "Hgfks.php";
echo "You're right"."\n";
echo $flag;
}
?> Emmm...
分析以下代码,分别有a、b、c三个条件,只要当这三个条件都满足的时候,就会输出Flag,a和b都比较简单,所以说本题的考点为参数c的array_search
绕过
代码的大概意思为:将a的值转换为整数,然后需要满足大于6000000 同时长度小于等于 3,我们直接使用科学技术法。
a=6e9
代码含义为:将b的值进行md5加密,当加密后的值后6位为8b184b
的时候,就会进行到下一个判断,我们直接使用脚本跑一下,得到的结果为53724
接下来就是本题的重点,搞了好久才研究出来/(ㄒoㄒ)/~~。
①、根据第一行代码可知,传入的c应该是一段JSON的数据,然后解析为数组。
②、首先判断Json中Key为m的Value不能为数字,并且需要大于2022,这个简单只需要利用php的弱类型比较,将m赋值为2023开头的字符串即可,这里将其赋值为2023a
③、然后对key为n的value进行判断,要求n必须为一个数组,并且value的数量必须为2,并且n的第一个value又必须为一个数组。然后有意思的来了,题目要求第一次用array_search
搜索的时候,必须在n中含有DGGJ
,但是接下来的代码是循环查看数组中是否含有DGGJ
,如果含有的话就直接die
了。
④、经过参考array_search
的官方文档,发现当使用in_array()
或array_search()
函数时,如果strict
参数没有设置为true
,则in_array()
或array_search()
将使用松散来判断。
这里用代码来演示一下什么是松散判断
$array = ['a',0,1,2,'3'];
var_dump(in_array('abc', $array)); //True,下标为1(查看是否在数组中)
var_dump(array_search('abc', $array)); //搜索abc字符串在数组中出现的第一个下标
在array数组中查找abc,我们可以发现其实数组中并没有abc,但是因为松散判断,匹配到了数字0,其实和
var_dump("admin" == 0); //结果true
同理
发现此漏洞的话,我们就可以将数组c中的第二个值设置为0,这样会满足array_search()
的条件,同时也不存在DGGJ
。
最终我们的payload为
?a=6e9&b=53724&c={
"m":"2023a",
"n":[[],0]
}
条件,同时也不存在DGGJ
。
最终我们的payload为
?a=6e9&b=53724&c={
"m":"2023a",
"n":[[],0]
}
通常,在项目上使用Git的工作时,你会希望排除将特定文件或目录推送到远程仓库库中的情况。.gitignore文件可以指定Git应该忽略的未跟踪文件。在本教程中,我们将说明如何使用.gitignore忽略Git中的文件和目录。包括常见匹配模式*星号,斜杠/,#井号注释,?问号,[]方括号等通匹配符,一个.gitignore文件的示例,自定义排除忽略规则,全局的.gitignore配置,调试.gitignore文件,显示所有被忽略的文件应该忽略哪些文件被忽略的文件通常是特定于平台的文件或从构建系统自动创建的文件。一些常见的例子包括:运行时文件,例如日志,锁定文件,缓存或临时文件。具有敏感信息的文件,例如密码或API密钥。已编译的代码,例如.class或.o。依赖目录,例如/vendor或/node_modules。构建的输出目录,例如/public,/out或/dist。系统文件,例如.DS_Store或Thumbs.db。IDE或文本编辑器配置文件。.gitignore模式.gitignore文件是纯文本文件,其中每行包含一个模式,用于忽略文件或目录。.gitignore使用globbi
官方学习文档Handbook-TheTypeScriptHandbook基础类型:声明变量布尔类型布尔也就两种,true或者falseletisBoolean:boolean=false; functiontell(){ alert(isBoolean) } tell()复制number数值类型有很不止number,bigint也是。同时值的话可以是十进制,二进制,还可以是NaN。letnum:number=10; letdecimal:number=6; lethex:number=0xf00d; letbinary:number=0b1010; letoctal:number=0o744; letbig:bigint=100n; letnan:number=NaN; functiontell(){ num--; console.log(num) } tell()复制string字符串,可以是普通字符串,还可以是模板字符串letfullName:string=`BobBobbington`; letage:number=37; letsentence:string=`Hell
一、背景概述近年来,国家土地资源遭受违法滥用现象突出,各种土地合理利用问题日益显现,土地利用不当,导致各类地质灾害不断加剧,良田受损,森林资源遭到乱砍滥伐,煤矿开采不合理、各种城市开发区非法建筑等,都对国家的每一寸宝贵的土地资源造成了一些无法弥补的损失,如何加强土地资源的管理和各级部门领导的办事工作效率,保护好土地资源和各类违法建筑、违法用地、违法开采等时间的提前预知,摆到了各级主管部门和领导的面前。在经济高速发展、各类资源都在供应紧张的形势下,特别是国家土地资源的合理充分利用,是国家实现可持续发展战略中的重要一步,随着科技的高速发展,互联网在各种方面的应用已经无法替代;因此,伴随视频压缩处理技术、网络通讯技术的快速发展,数字化的远程视频传输应用得到广泛普及。二、需求分析近年来,在安徽、四川、江西和天津等省份的一些国土资源部门实行远程视频监控系统,效果显著,通过现代科技手段,创新管理方式,实现对基本农田保护区、国家重点矿区、国土资源领域违法行为易发区24小时不间断监管。所以,数字化大型联网视频监控系统的广泛应用是一个大趋势,必将推动各级部门的广泛应用。兼容有线无线网络大型视频监控综合管
加拿大机械臂完成太空任务加拿大机械臂辅助太空行走加拿大机械臂由于其实大负载,长臂杆,其是典型的柔性机械臂代表。刚性机械臂建模方法已经可以有效地求解出机械臂各部分之间的耦合情况,但是对于柔性机械臂的动力学建模其侧重点在于基于刚性机械臂建模方法的基础上如何有效的处理机械臂关节柔性以及臂杆柔性的问题。由于机械臂的截面相对于其长度而言很小,可以将柔性杆作为Euler-Bernouli梁,柔性机械臂可以视为一个具有无限自由度的连续系统。相对于刚性机械臂杆件之间的耦合,柔性机械臂还需要考虑关节的柔性以及臂杆弹性变形的耦合。因而,柔性机械臂的运动方程具有高度非线性。在对柔性系统进行建模的过程中,需要解决坐标系的选择、柔性体的离散化、动力学建模方法以及方程求解等问题。1柔性体的描述柔性体的描述是柔性机械臂建模与控制的基础。根据选择参照系的不同,一般可分为相对坐标法以及绝对坐标法。由于绝对坐标法虽然可以获得形式简单的动力学方程,但是却大大增加了广义坐标的数目,进而需要引入相应的约束方程。目前的应用已经较少。而相对坐标法则是在柔性体上建立一动参照系,将柔性体的真实运动分解为牵连运动和相对于动坐标系运动的迭
智慧环卫,依托物联网技术与移动互联网技术,对环卫管理所涉及到的人、车、物、事进行全过程实时管理,合理设计规划环卫管理模式,提升环卫作业质量,降低环卫运营成本,用数字评估和推动垃圾分类管理实效。智慧环卫所有服务部署在智慧城市管理云端,对接智慧城市网络,以云服务方式随时为管理者及作业人员提供所需的服务。行业痛点及可视化应对策略城市环卫有诸多智慧环卫系统作为智慧城市的一部分,成为社会发展的需要:城乡环卫一体化,破解垃圾围城生活垃圾源头减量化,促进垃圾分类有效管理餐厨垃圾流向,杜绝地沟油严控渣土运输,杜绝建筑垃圾乱排乱放;同时也是环卫管理有力帮手:人工作业全面转向机械化作业的需要,是人多、车多、事多、设施多、运营成本高、作业效率低、保洁清运不及时等问题的可视化解决方案。例如:垃圾车随意到处倾倒,垃圾产量无法准确统计;突发事件无法及时处理;员工工作质量无法考核;公共设施的配置覆盖范围无法监测;载重数据无法最大化利用;设备设施故障;无法精细化管理响应垃圾分类政策;无法根据垃圾运量来合理配置车辆载重和中转站位置;渣土车漏撒问题、违规倾倒问题;无法监测控制超载、渣土车行经路线进入违规区域等。再此,图扑
对,你没看错,本文就是教你怎么写无法维护的代码。 一、程序命名容易输入的变量名。比如:Fred,asdf单字母的变量名。比如:a,b,c,x,y,z(如果不够用,可以考虑a1,a2,a3,a4,….)有创意地拼写错误。比如:SetPintleOpening,SetPintalClosing。这样可以让人很难搜索代码。抽象。比如:ProcessData,DoIt,GetData…抽象到就跟什么都没说一样。缩写。比如:WTF,RTFSC……(使用拼音缩写也同样给力,比如:BT,TMD,TJJTDS)随机大写字母。比如:gEtnuMbER..重用命名。在内嵌的语句块中使用相同的变量名有奇效。使用重音字母。比如:intínt(第二个ínt不是int)使用下划线。比如:_,__,___。使用不同的语言。比如混用英语,德语,或是中文拼音。使用字符命名。比如:slash,asterix,comma…使用无关的单词。比如:god,superman,iloveu….混淆l和1。字母l和数字1有时候是看不出来的。 二、伪装欺诈把注释和代码交织在一起。代码和显示不一致。比如,你的界面显示叫postalco
一.作用与mediaquery(媒体查询)类似,featurequery(特性查询)也是一种条件样式,仅在支持特定样式规则的环境应用指定的一组样式:The@supportsCSSat-ruleletsyouspecifydeclarationsthatdependonabrowser’ssupportforoneormorespecificCSSfeatures.Thisiscalledafeaturequery.等等,这种能力似乎CSS生来就有:为了保证新属性和新值将来可以添在现有的属性上,用户代理必须忽略一份非法样式表的某一部分,如含有未知属性的声明、含有非法值的声明、含有未知@关键字的@规则等等。P.S.具体见4.2处理解析错误的规则CSS从设计之初就是容错的,当前环境下支持的样式规则会被正确应用,不支持的会被静默忽略掉:Browserssimplyskipovercodetheydon’tunderstand,withoutthrowinganerror.比如经常见到的:.card{ margin:10px; border:1pxsolid#ddd; box-shadow:3p
TMTG将于中国香港时间8月16日08:08:08pm上线中国香港领先的数字资产交易平台Coinsuper(币成),开放迈达斯金(TMTG)的充值/提现功能,同步开启TMTG/BTC交易。 Coinsuper交易所网址:https://www.coinsuper.com/ 什么是TMTG? TMTG项目将利用区块链技术,使用区块链技术创建一个生态系统,用于交易法定货币和黄金等有形商品。该项目解决了加密货币行业面临的最大挑战之一,即为许多人提供一个为日常生活带来真正价值的平台。 项目官网:https://dgex.io/ █TMTG加密货币加入认知变更的生态界竞争宣言 本月3日,在首尔江南区开展的火币狂欢节中,被称为亿万富翁的RogerVer发表声明称:“加密货币可以提高所有国家的经济自由度。与其说加密货币将被认证为实际货币,倒不如说是提出以‘虚拟与现实的会晤’为口号的TMTG开发公司DGE已经展开了关于加密货币生态界的战争。” DGE的相关负责人表示,相比去年竞争尤为激烈的时期,目前加密货币迎来一个小规模的冰期。当时的货币开发公司将精力都集中于自身的技术开发中,却忽视了如何让货币持续生
贪心经典题,大意是说给你一个糖果大小的数组s,给你孩子的需求数组g,让你能尽可能多的满足孩子的需求,最多能满足多少个孩子classSolution{ publicintfindContentChildren(int[]g,int[]s){ intchild=0,cookie=0; Arrays.sort(g); Arrays.sort(s); while(child!=g.length&&cookie!=s.length){ if(s[cookie]>=g[child]){ cookie++; child++; } else cookie++; } returnchild; } }复制classSolution{ public: intfindContentChildren(vector<int>&g,vector<int>&s){ std::sort(g.begin(),g.end()); std::sort(s.begin(),s.end()); intchild=0;//满足了几个孩子 intcookie=0;/
Java基础部分学习的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法,这些都是最基本而且最易问到的,我们只要每天学一点点,日积月累知识面会更广。网络配图1、如何把一段逗号分割的字符串转换成一个数组?如果不查jdkapi,我很难写出来!我可以说说我的思路:(1)、用正则表达式,代码大概为:String[]result=orgStr.split(“,”);(2)、用StingTokenizer,代码为:StringTokenizertokener=StringTokenizer(orgStr,”,”);String[]result=newString[tokener.countTokens()];Inti=0;while(tokener.hasNext(){result[i++]=toker.nextToken();}2、数组有没有length()这个方法?String有没有length()这个方法?数组没有length()这个方法,有length的属性;String有有length()这个方法。3、下面这条语句
Java中的I/O模型在JDK1.4之前,基于Java的所有socket都是使用阻塞I/O(BIO),JDK1.4提供了非阻塞I/O(NIO)功能,虽然称为NIO但实际上底层模型是I/O多路复用,JDK1.7提出了异步I/O(AIO)功能。 BIO/NIO/AIO区别概述: BIO(BlockingI/O):同步阻塞I/O模式,数据的读写必须在一个线程内等待其完成。NIO(Non-blocking/NewI/O):同步非阻塞I/O模型。在Java1.4中引入了NIO框架,对应java.nio包,提供了Channel,Selector,Buffer等抽象。它支持面向缓冲,基于通道的I/O操作方法。NIO提供了与传统BIO中的Socket和SeverSocket相对应的SocketChannel和ServerSocketChannel两种不同的套接字的通道实现,两种通道都支持阻塞和非阻塞I/O模型。阻塞模型就是传统的I/O一样,比较简单但是性能和可靠性都不好;非阻塞模型正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并
我的腿让我停下,可是我的心却不许我这么做 今天又是为了明知多半不可能的事情奔波一早,一天里,出了很多丑,犯了很多错,见了很多人,有了很多意想不到的收获,我选择了我的生存方式,我努力地撒野生长。现在是凌晨一点了,我不敢去睡觉,因为夜幕总会揭开我的绝望,总是这样。武汉大学的校训是什么来着?自强弘毅?自强我懂,弘毅我不想懂。无聊地翻翻知网,现在已经能随意下载。图书馆里也有很多外文资料,那也是我唯一的栖居地了。我不理解为什么刚开学就要把自己搞得这么忙而碌碌,或许,我只是不想把能花精力解决的问题,变成需要时间接受的结局。接受每一步,就不能害怕接受;可为了前进,就不能甘心接受———那么我到底该怎样?一辈子活在过去的阴霾下,即使都麻木到看不透阴霾埋藏之物,在黑暗中独步行吟,仔细分析题意,发现不同的字符串长度最多只有\(\sqrt{n}\)个,所以可以按长度分类,而每种长度内部都是\(O(n)\)的,总复杂度即是\(n\sqrt{n}\)的。对每一长度中涉及的询问字符串,处理的方法就是暴力遍历,求出所有目标串的起始点(方法太多,这里姑且用\(hash\)解决,之后就显然了。 $click$$fo
一auth模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用auth_user表来存储用户数据,使用auth模块来进行用户认证,那么需要使用人家django自带的auth_user表来存储用户的信息数据。 模块导入: fromdjango.contribimportauth 复制 那么有人就有疑问了,这个auth_user表并不是我们自己在models.py文件中创建的啊,这通过代码怎么操作啊? 其中一个往auth_user表里面添加数据的命令,可以先多添加几个用户,方便后面操作: pythonmanage.pycreatesuperuser#要通过这个指令来创建用户,因为这个指令会将你的密码加密。 复制 然后表中就有数据了:这个表里面的数据现在先关注username和password字段就可以了,其他的字段
目录 1POSIX正则表达式 1.1头文件 1.2注意事项 1.3基本方法 1.4POSIX正则表达式基本规范 1.5源码示例 1 POSIX正则表达式 1.1 头文件 #include<regex.h> 1.2 注意事项 不过在C++的字符串中,'\'表示转义后面的字符,'\\'才表示一个'\',而在正则中,'\'也表示转义,所以一个'正常'的正则在修改为C++正则时,所有的'\'都要加倍。 POSIX正则表达式有自己的一套规范,与常用的正则表达式不完全相同。 1.3 基本方法 1.3.1 regcomp 函数原型 intregcomp(regex_t*preg,constchar*regex,intcflags); 功能 编译正则表达式,以便regexec方法使用。 参数含义 p
SELECTTOP10 database_name=DB_NAME(details.database_id), schema_name=SCHEMA_NAME(tb.schema_id), object_name=tb.name, avg_estimated_impact=dm_migs.avg_user_impact*(dm_migs.user_seeks +dm_migs.user_scans), last_user_seek=dm_migs.last_user_seek, create_index='CREATEINDEX[IX_'+OBJECT_NAME(details.object_id, details.database_id) +'_'+REPLACE(REPLACE(REPLACE(ISNULL(details.equality_columns,''), ',','_'),'[',''),']','') +CASEWHENdetails.equality_columnsISNOTNULL ANDdetails.inequality_columnsISNOTNULLTHE
FPGA实现神经网络加速FPGA神经网络 1整体思路 采用LeNet-5作为手写数字识别的神经网络,原因:LeNet网络结构比较简单。 1.1LeNet结构 enterdescriptionhere enterdescriptionhere LeNet共分为7层,分别是: C1,卷积层 S2,池化层 C3,卷积层 S4,池化层 C5,卷积层 F6,全连接层 OUTPUT,全连接层 输入图片为尺寸32×32,也可以输入灰度处理后的数值即可。 卷积核大小为5×5 所有数据为float16类型, 2卷积层 (1)MultiFilterLayer 一个卷积层,有多个Filter,也可以称为卷积核,image与不同的Filter卷积,得到包含不同特征的featuremap。 enterdescriptionhere (2)SingleFilterLayer 单个Filter,输入image,输出featuremap。 (1)MultiFilterLayerenterdescriptionhere (3)ConvolutionUnit 每个卷积核与输入图像进行卷积,得到特征图 en
本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案.(我的系统是win7装的Oracle11g)1、错误描述:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如"性能日志和警报"服务。2、解决办法:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN下的listener.ora这个文件里的内文件容改一下HOST=你的计算机名字。3、原因分析:造成这种错误的原因是:安装oracle的时候是连网的,那么listener.ora文件里的HOST=网络给你分配的IP地址,而在你断网的时候就会出现这样的情况。手动启动一个问题:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。问 题一:首先查阅你的【NETWORK\ADMIN】目录下的【tnsnames.ora】和【listener.ora】这两个文件,我
随机森林 随机森林(RandomForest)算法是基于单棵决策树的改进,将多个弱分类器组合成一个强分类器,其用到了集成学习bagging的思想。 基本思想 随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多棵决策树组成。其随机体现在针对每棵树,按比例随机抽选样本,随机抽选特征,然后进行训练,这也是bagging思想的体现。 做一个形象的比喻:你想要购买几只基金,但是你自己不知道怎么去挑选,于是你就去找了专家咨询了。做两个假设: 1.假定每个专家对不同领域的基金有独特的见解,有人擅长期货,有人擅长货币,有人擅长QDII,还有人会玩比特币,因此每个专家所对应的基金池也有所不同。 2.再假设每个专家判断基金的信息来源也不同,影响一支基金走势的好坏有很多,例如国家政策,经济形势,或一些不对称内部信息来源。 每个专家都根据自己所获取到的信息进行分析,生成一套自己的分析理论,这就是生成了单棵决策树。你带着几支基金去找他们,把你所知道的各种关于这些基金的信息告诉他们,这就是测试集和特征。他们根据自己的分析理论来帮你判断这几支基金是买还是不买,这就是二分类预测问题。最后你再根据他们每个任何