后台一般安全做的比较差,最容易出现的是文件包含漏洞。我很快在源码里找到一处鸡肋文件包含。/admin/Lib/Action/ApiLoginAction.class.php <?...$font_dir)); } 那么我可以构造一个“能够解压一半”的压缩包,解压出部分php文件,然后出错。这样就执行不到“删除”的代码了。 另外一个方法是,我解压的时候修改文件名为“.....又重新换文件名试了一下,也403。试了一下不存在的.php文件,也403。基本上就是这个规则:public目录下,所有.php文件都是403。...但这里不一样,我解压出来一个xxxx_api.php,虽然在public目录下不能执行,但通过文件包含的方法包含之,即可执行我的webshell了。...试了一下phtml、php3/4/5,都不能解析。这个时候我想到apache的解析漏洞了:当apache不识别最后一个后缀时,会向前寻找直到找到一个能够识别的后缀。
顶顶大名的Redis作者谈如何在Redis这样系统软件上进行代码文档注释,以下是九种注释类型的大意说明: 很长一段时间以来,我一直想在YouTube上发布一段“如何对系统软件文档注释”的新视频,讨论如何进行代码注释...在此过程中,我试图说明为什么编写注释对于生成良好的代码是至关重要,从长远来看,这些代码是可维护的,并且在修改和调试期间可由其他人和作者自己理解。...但为什么要强迫阅读者做这样的想象努力呢?因为在编写代码时,原始作者就是这么想象的:在每次调用后想象一下当前堆栈里的情况。...阅读代码非常方便,能直接找到函数或方法的文档,这样代码读者就会只关注代码,而不是在代码和文档之间的上下文切换。 设计注释 虽然“函数注释”通常位于函数的开头,但设计注释通常位于文件的开头。...它们一般都不是很好,我试图避免它们,但避免并不总是可能的,有时希望不要永远忘记一个问题,我更喜欢在源代码中放置一个标识。
原因呢,在于算法这个东西,很多人认为前端用不着算法,算法都在后端,大厂只是为了筛人才考算法,实际工作中是用不着的。这样的回答我听过了很多很多,一般我也不会直接反驳,随便问几个问题就行了。...怎么给一个数字数组排序。用数组的sort函数?为什么,如果我数据量特别大呢?如果这个数组里不是数字,而是对象呢,我要求稳定排序,你还用sort吗?sort底层怎么实现的呀? 精通Vue?...还有一些复杂项目,如果把逻辑都放在后端,那如果和服务端交互太多且慢,最后导致影响了用户体验,你是不是可以考虑把一部分逻辑放在前端呢,比如在已有数据里找到评分最高的餐厅,你会实现吗?...当然第1个方法很简单也很高效,对于第2个和第3个我来详细说一下,首先书的话,建议买经典书籍,这个时候推荐《算法导论》与《算法》: 《算法导论》这本书很详细,讲了算法领域的所有思想,也是我大学时候老师让买的教材...当然书的难度并不低,所以一开始也不用强求自己全部掌握,可以当做一本工具书,时尝翻阅。红色的《算法》书里有很多JAVA版算法代码实现,当然算法不分语言,前端小伙伴学习的时候拆到JS就可以了。
我也一直如此 但这两天我却以另一种方式编写着代码,一种没有丝毫创造性,犹如走在漆黑悬崖边上,每移动一厘米都需要小心翼翼,而且枯燥乏味到令人崩溃的方式 我发誓, 在我写代码的生涯当中,这绝对是体验最差的一次...我要做的事情就是把上千行只知道很重要,不知道干什么的,没有文档,没有可读性, 有几百万人在用的,输出的内容连一个字符都不能有误的php代码改成golang代码 这不仅艰难, 而且乏味 我先要使这些代码在开发环境中运行起来...这是一个很痛苦的过程, 期间有一个念头在我的脑海里想起许多次:要是有一个工具能把php代码转换成golang代码, 我一定不惜一切去获得。...php中数组、map是同一个东西,golang中要分别使用slice、map实现 php中string、int、double可以放在同一个变量里, golang不行 php中"1"+"2"可以等于3,golang...于是我又是检查测试脚本, 又是琢磨旧代码, 又是修改新代码的, 使不一致的数据项减少到了五百项 还是不行 于是我又是检查测试脚本, 又是琢磨旧代码, 又是修改新代码的, 使不一致的数据项减少到了三百项
,默认是256 xdebug.max_stack_frames integer -1 控制有多少堆栈帧显示在堆栈跟踪中,在PHP错误堆栈跟踪的命令行中,以及在浏览器中显示HTML跟踪。...xdebug.dump_once boolean 1 控制是否应该在所有错误情况(设置为0)上转储超全局变量的值,或只在第一个错误情况下转储超全局变量的值(设置为1) xdebug.dump_undefined...在跟踪或分析脚本时,您通常希望关闭此选项,因为PHP生成的oparray将增加大约三分之一的大小,从而减慢脚本速度。无法使用ini_set()在脚本中设置此设置,但只能在php.ini中设置。...DEBUG端口默认是9000,如果配置文件内修改了,当然在IDE内也需要修改下。 调试 介绍下实际DEBUG过程中PHPSTORM面板的按钮都是做什么用的。...最后修改:2天前 © 著作权归作者所有
问题: 我的VB客户端需要向web服务器发送数据,在服务器端更新到数据库。但发送的数据中,肯定出现中文。但在服务器端,用request得到的是乱码。...尝试4:用adodb.stream,这个东西我也不熟,但貌似可以在客户端进行unicode和utf-8的转换,找到一个中国台湾的页面,提到转换方法: http://delphi.ktop.com.tw.../board.php?...cid=31&fid=77&tid=66001 但我居然无法把它套用到简体环境,我试了几种charset,都不行。...在服务器端用GB2312或者GBK代码页解析。 我没有用大量中文进行测试,只选择了“镕”字测试了一下,结果,可以被服务器正确的识别。
,分别是本身不能为 null 但成员可以为 null 的数组和本身可以为 null 但成员不能为 null 的数组,这样的两种不同的类型在 Java 里面又应该怎么表达呢。...在 SO 提问之余,我就自己研究了一下。 我猜测,可能 [] 前面也能写东西?...于是我试了一下: void f(@NotNull String @NotNull [] strings) { } 这个代码居然编译过了(提醒一下读者:不是所有注解都可以这么用的,如果你在使用自己写的注解尝试这个例子...别急,在不知道这个东西的语义的时候先不要急着批判 Kotlin。...不过我还是不知道他们各自在类型上生效时的字节码的意思(看不懂字节码真是对不起呢),于是就使用控制变量法,再写两个函数对比一下(之所以使用两个不同的 List 实现,是因为 List 和数组不一样,擦除了就一样了所以
但深入研究一下这两个知识点,还是很有意思的。 首先通过简单的目录扫描,找到备份文件index.php.bak。...所以呀,后台提交的writeup里,有的同学想当然地认为修改eval为echo就能输出源码了……实际上根本没实际试过,改动文件是会导致不能运行的;还有同学认为这里仅是将源码混淆为用户体验极差的代码,导致人眼无法阅读...16年kuuki曾分享过一个在线解密的工具: https://xianzhi.aliyun.com/forum/read/64.html ,但测试了一下phpjiami解密不了。...虽然我们不能直接修改index.php,将这些变量打印出来,但是我们可以动态包含之,并打印下所有变量,其中必定有我们需要的源码(var_dump输出的不完整,只是用它举个例子): ?...', $filename); } 也就是说我能控制filename这个数组。所以,我只需要找到arr[count(arr)-1]和end(arr)的区别,即可绕过后缀检查。
恢复的时候在看,发现touch和所有写文件的函数(file_put_contents()、file_put_contents()、fputs())都不能用了。 然后这个思路就断了,直接跳了下一题。...$GLOBALS是PHP中的超全局变量,官方是这样定义的: $GLOBALS — 引用全局作用域中可用的全部变量。 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。...等我吃个饭回来一想,卧槽,数据库文件我怎么用sublime打开呢,于是拿出Navicat。在文件中找了一下,发现: 打开这个链接就可以把网站的源码下载下来(后来不知道为什么删除了,还好我做的快)。...首先看主界面 点击PREVIEW(WITHOUT CODE)可以将input message 的内容在preview.php中预览,这里自然而然的想到了XSS,于是测试了一下,发现过滤、...就是在管理员的Cookie中 还有两题题目,其中flag vending machine 已经研究的差不多了,打算单独写一篇文章,因为研究的不只是这个题目,还有其他一些东西。
(前言:很多的小伙伴基本上信心满满的下载了一个辅助,拖入PEID查壳,看到.vmp1的字样就放弃了,因为VMP确实挺难的,更何况加上一个虚拟机的检测。) 正题!...我们先来看看虚拟机检测是什么样子的。 这是我在市场上随便抓来的一款检测虚拟机的辅助。...那么要破解有这玩意可不行啊,很麻烦的,大家都知道OD是动态调试工具。那这种检测都不能发挥OD的功能呀,我们来解决掉这个虚拟机检测吧。 载入OD 日常VM,一堆看不懂的。哈哈哈哈。...接下来就在堆栈窗口右键查找地址-搜索HEX地址00400000。 来到这里之后可以看到有两个00400000 找到第二个下面的0000001F修改这个数值。 全部修改为0。...这里介绍一种比较简单快速的方法,测试了几个程序都有效。
最近写程序的时候遇到一个问题,就是我用PHP控制浏览器缓冲,试了N次都无法实现想要的效果,具体程序见下面的代码: 上面这段程序是实现每隔1秒钟在浏览器上输出一个字符,但实际效果是程序执行完后才把所有字符输出到浏览器上,调试了好几次都不行。在网上搜索了N个技术文章都没有解决这个问题。...最后从一篇文章上找到些灵感,那篇文章里写到flush()函数可能在微软IE浏览器的个别版本上不起作用。...于是我用FireFox浏览器试了一下,果然立即出现了想要的效果,我的浏览器是IE6,经过查阅相关资料,得知,IE的某些版本只有在字符串缓冲到256字节的时候才会将缓冲内容输出到浏览器上。...根据这个特点,我修改了一下程序,结果得到了预期的效果,具体代码如下: <?php for ($i=0; $i<10; $i++) { echo "".
本文实例讲述了PHP SPL应用方法。分享给大家供大家参考,具体如下: Rafael Dohms 上面的篇文章 让我为之惊艳,忍不住就翻译了下来,同时补充了部分内容。...SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置。 似乎众多的 PHP 开发人员基本没有使用它,甚至闻所未闻。...这些工具聚合在一起就好比是把多功能的瑞士军刀,善用它们可以从质上提升 PHP 的代码效率。那么,我们如何发挥它的威力?...虽然我们可以使用传统的变量类型来描述数据结构,例如用数组来描述堆栈(Strack)-- 然后使用对应的方式 pop 和 push(arraypop()、arraypush()),但你得时刻小心,·因为毕竟它们不是专门用于描述数据结构的...而 SPL 的 SplStack 对象则严格以堆栈的形式描述数据,并提供对应的方法。同时,这样的代码应该也能理解它在操作堆栈而非某个数组,从而能让你的同伴更好的理解相应的代码,并且它更快。
数组排序2019-12-01 04:30:17 我正在尝试按日期和时间以ISO 8601格式对PHP中的数组进行排序.我仍在尝试掌握PHP,并尝试了许多关于堆栈溢出的解决方案,而我只是无法确定正确的功能...我有一个文件.在Python中,我想花费它的创建时间,并将其转换为ISO time (ISO 8601) string,同时保留它在Eastern Time Zone(ET)中创建的事实....我最初想要以不同的格式输出它,但是稍后需要用它做其他的东西(也就是说可能以不同的格式使用)....我在Python标准库中找到了strptime,但它不是很方便. 做这个的最好方式是什么?...: 2015-03-21T11:08:14.859831 2015-03-21T11:07:22.956087 我读了Wiki article on ISO 8601,但没有得到最后6位的含义.
(前言:很多的小伙伴基本上信心满满的下载了一个辅助,拖入PEID查壳,看到.vmp1的字样就放弃了,因为VMP确实挺难的,更何况加上一个虚拟机的检测。) 正题! 我们先来看看虚拟机检测是什么样子的。...image.png 这是我在市场上随便抓来的一款检测虚拟机的辅助。...那么要破解有这玩意可不行啊,很麻烦的,大家都知道OD是动态调试工具。那这种检测都不能发挥OD的功能呀,我们来解决掉这个虚拟机检测吧。 载入OD image.png 日常VM,一堆看不懂的。哈哈哈哈。...image.png 接下来就在堆栈窗口右键查找地址-搜索HEX地址00400000。 image.png 来到这里之后可以看到有两个00400000 找到第二个下面的0000001F修改这个数值。...这里介绍一种比较简单快速的方法,测试了几个程序都有效。
所以呀,后台提交的writeup里,有的同学想当然地认为修改eval为echo就能输出源码了……实际上根本没实际试过,改动文件是会导致不能运行的;还有同学认为这里仅是将源码混淆为用户体验极差的代码,导致人眼无法阅读.../forum/read/64.html,但测试了一下phpjiami解密不了。...提高篇:有没有什么简单的办法在命令行下也能模拟web环境呢?方法我先不说,大家可以自己思考思考。 #0x03 手工dump法 那么有的同学说:php扩展太难了,我不会写C语言,怎么办?...虽然我们不能直接修改index.php,将这些变量打印出来,但是我们可以动态包含之,并打印下所有变量,其中必定有我们需要的源码(var_dump输出的不完整,只是用它举个例子): 当然,这个方法虽然简单...', $filename); } 也就是说我能控制$filename这个数组。所以,我只需要找到$arr[count($arr)-1]和end($arr)的区别,即可绕过后缀检查。
如果我把所有东西都改成单一颜色,我就会遇到堆栈溢出。这是因为我们的递归函数经历了10K次递归。 顺序迭代 由于内存比函数调用堆栈大,我的下一个想法是在一个循环中完成整个操作。 我们将跟踪节点列表。...将它拆分为3个较小的数组,可以减少内存占用以及在列表中需要执行的循环量。不过,这并不能解决所有颜色都相同的情况,因此这不会修复递归版本。 这也意味着我们可以多线程操作,将执行时间缩短近三分之一。...我提出的主要解决方案是在Redux Observable样式中使用RxJS,但不使用Redux。 这实际上是我对这篇文章的挑战。...从技术上讲,这也胜过递归方法,因为在那个场景中堆栈溢出。 在研究了如何使用RxJS流数据之后,我意识到这对于本文来说太难了。希望以后的文章详细讨论这些代码示例。...当所有节点颜色相同时,采用Redux-Observable并行方法就会受到影响。我试了很多方法使它更快,但都没有奏效。 游戏开发 在我的职业生涯中,我曾两次遇到这种代码。
最近因为部门需要做下线上PHP集群业务的监控,自己就研究了一下。...开始在网上看了很多博客,都只是讲一些GRAFANA的很基本的应用,很少有完整讲讲业务应用监控的,自己研究了2天,总算测试通过了,就先写一篇文档记录下自己整理的一些东西,后面继续加深学习。...安装php7 二、安装(参考http://www.jianshu.com/p/dfd329d30891) nginx和php的安装用的我们公司的rpm,大家自行搜索安装 三、安装好软件后,在monitor_model...此台机器上配置nginx 1、修改nginx,我的配置文件单独摘出来了,如下 2、打开api.conf文件,添加如下内容 配置完nginx后重载 3、在两台机器上分别配置php,配置完后重载 /home...配置两组php机器(urls那里是一个数组,我试了半天,汗) 6、打开grafana测试,配置好数据源 可以根据sql的where语句控制要查询的哪台机器,根据pool区分 可以看到主机pool
现在想起来sql都不能上马被360杀这个肯定也不行。 好了现在深夜四点我也不是那种不要命的学习的那种,刚十二点就睡了,但是室友各种打dnf吵,一会就说一句话一会又说一句话深感绝望,于是起来学习。...然后我用菜刀试了几个我常用的密码,发现都不对。刚刚看到了那个视频讲了一下如何使用msf破解菜刀密码。但是有一点点小的瑕疵,我就补充一丢丢。 首先我用我的电脑复现一下当时老师服务器的情况 ?...菜刀 菜刀这个东西我以前刚用的时候不知道用法就瞎搞,相信很多新手刚学的时候也有我一样的问题,就是传上去一个木马,比如我在xx.com.cn/xx/yy/upload.php这里上传了一个木马,然后我开菜刀...然后当时也是不懂就瞎搞,菜刀这个东西必须要找到你上传的木马的路径,就是举个例子xx.com.cn/xx/yy/zz/upload/1.php,然后你开菜刀直接把url输入进去,然后输入木马的密码,就可以了...,木马的密码实际上是一个变量,大家可以试试手动搞,把POST改为GET,然后在访问木马的时候加上?
SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口。而且从 PHP5.3 已逐渐的成熟。SPL 事实上在全部的 PHP5 开发环境中被内置。...用于重载相应的功能。 这些工具聚合在一起就好比是把多功能的瑞士军刀,善用它们能够从质上提升 PHP 的代码效率。那么。我们怎样发挥它的威力?...会内置其它很多其它的迭代器。我想你都能够尝试下。也许它能改变你编写传统代码的习惯。 SplFixedArray SPL 还内置了一系列的数组操作工具。...尽管我们能够使用传统的变量类型来描写叙述数据结构,比如用数组来描写叙述堆栈(Strack)– 然后使用相应的方式 pop 和 push(arraypop()、arraypush()),但你得时刻小心,·...而 SPL 的 SplStack 对象则严格以堆栈的形式描写叙述数据,并提供相应的方法。 同一时候。这种代码应该也能理解它在操作堆栈而非某个数组,从而能让你的同伴更好的理解相应的代码。而且它更快。
),想实现PC用锦鲤主题,然后移动端使用最新的轻奢主题,这个刚刚测试了一下的确可以实现,但是需要修改一处代码和开启是个插件。...再次声明,我仅仅测试可以使用,但是具体是否有bug我并没有深度测试,自己看看研究吧,但是据我估计,出错也是在模块管理的位置,因为移动端不能设定侧栏的显示内容,假如PC端的某个侧栏内容,移动端没有,那么可能会出现错乱...,不多说了,直接上教程; 首先购买我的百度MIP-轻奢主题(当然你可以使用别主题,这只是举例),然后在左侧菜单的应用中心搜索“不同域名不同主题”插件,下载开启,如图: ?...插件设置完成,还需要修改PC端一处代码,找到主题目录下的(/zb_users/theme/主题ID/template)header.php文件,点击右键编辑,当然这里使用使用FTP修改,什么你不懂FTP...那好吧,官方提供了主题的在线编辑插件,还是应用中心搜索“主题编辑”下载,启用: ? 在新对话款找到header.php文件,如图: ?
领取专属 10元无门槛券
手把手带您无忧上云