某些之前的漏洞的遗忘的记录 ,学网络安全看这就完事了

  • __involk会在对象呗当作函数调用的时候触发。
  • __call会在对象访问了不可访问的或者不存在的方法时会自动调用。
3.反序列化的字符逃逸:

对于该漏洞,当时我是回答的模模糊糊的,也正是因为我当时简简单单地看了这个知识点之后没有认真地去学习,去刷题巩固,因此,才会出现回答的模模糊糊的情况,因此,这里稍微内容详细点吧。

1).情况一----过滤后字符变多:

​ 首先,假设一个类,然后有三个属性:username、password、isVIP

class user{
public $username;
public $password;
public $isVIP;

public function __construct( u , u, u,p){
$this->username = $u;
$this->password = $p;
$this->isVIP = 0;
}
}

​ 当这个类被初始化的时候,isVIP被默认初始化为0,另外的两个属性则需要在实例化对象的时候传入相关的参数。

​ 以下是传入属性的完整代码。

<?php class user{ public $username; public $password; public $isVIP; public function \_\_construct($u,$p){ $this->username = $u; $this->password = $p; $this->isVIP = 0; } } $a = new user("admin","123456"); $a\_seri = serialize($a); echo $a\_seri; ?>

​ 对于这一段代码的输出结果为:

O:4:“user”:3:{s:8:“username”;s:5:“admin”;s:8:“password”;s:6:“123456”;s:5:“isVIP”;i:0;}

​ 这个时候,如果给这个对象中加入一个替换字符串的方法, 将admin替换为hacker,由于admin和hacker的字符的数目之间有一些差别,admin比hacker少一个,因此,这个可以作为一个字符数目增多的一个替换。

<?php class user{ public $username; public $password; public $isVIP; public function \_\_construct($u,$p){ $this->username = $u; $this->password = $p; $this->isVIP = 0; } } function filter($s){ return str\_replace("admin","hacker",$s); } $a = new user("admin","123456"); $a\_seri = serialize($a); $a\_seri\_filter = filter($a\_seri); echo $a\_seri\_filter; ?>

​ 输出的结果为:

O:4:“user”:3:{s:8:“username”;s:5:“hacker”;s:8:“password”;s:6:“123456”;s:5:“isVIP”;i:0;}

​ 那么,假设,我们想要修改的是isVIP的值为1,那么,就需要通过过滤后字符变多的特性,来使得过滤之后多出来的字符个数等于之后的所有字符的个数,然后,将想要修改的子串补充在后面,也就是说,本来需要在new user()这个对象的时候,传入的参数从admin*47之后加上 ;s:8:“password”;s:6:“123456”;s:5:“isVIP”;i:1;},那么,这个时候的代码如下:

<?php class user{ public $username; public $password; public $isVIP; public function \_\_construct($u,$p){ $this->username = $u; $this->password = $p; $this->isVIP = 0; } } function filter($s){ return str\_replace("admin","hacker",$s); } $a = new user('adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}','123456'); $a\_seri = serialize($a); $a\_seri\_filter = filter($a\_seri); echo $a\_seri\_filter; ?>

​ 输出的语句就成为了:

O:4:“user”:3:{s:8:“username”;s:282:“hackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhacker”;s:8:“password”;s:6:“123456”;s:5:“isVIP”;i:1;}";s:8:“password”;s:6:“123456”;s:5:“isVIP”;i:0;}

​ 这里则会因为后面多余的子串会被丢弃,而成功完成了逃逸。

2).情况二----过滤后字符数目变少:

​ 对于如下代码:

<?php highlight\_file(__file__); function filter($str){ return str\_replace('ll', 'l', $str); } class person{ public $name = 'lonmar'; public $age = '100'; } ​ 其输出结果如下: O:6:"person":2:{s:4:"name";s:6:"lonmar";s:3:"age";s:3:"100";} ​ **因为PHP反序列化存在一个机制,那就是如果前面是规定了有10个字符,但是只读到了9个就到了双引号,这个时候PHP会把双引号当做第10个字符,也就是说不根据双引号判断一个字符串是否已经结束,而是根据前面规定的数量来读取字符串。** ​ 因此,由上方所示的机制,就可以猜想到,想要修改age的值,就需要使name的长度比真实的包括后面的一个多出\*\*";s:3:“age”;s:26:"123\*\*的数目个的量,也就是21,那么,就需要构造42个l,因此,构造如下: O:6:"person":2:{s:4:"name";s:47:"llllllllllllllllllllllllllllllllllllllllllonmar";s:3:"age";s:26:"123";s:3:"age";s:3:"111";}";} ​ 那么,对于name的属性的值就成为了**llllllllllllllllllllllllllllllllllllllllllonmar";s:3:“age”;s:26:"123**,具体代码示例如下: <?php highlight\_file(__file__); function filter($str){ return str\_replace('ll', 'l', $str); } class person{ public $name = 'llllllllllllllllllllllllllllllllllllllllll'; public $age = '123";s:3:"age";s:3:"111";}'; } $a = new person(); $a = serialize($a); var\_dump($a); $a = filter($a); var\_dump($a); var\_dump(unserialize($a)); ​ 输出的结果中,最后一步输出的结果为: **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。** **深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!** **因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。** ![img](https://img-blog.csdnimg.cn/img_convert/c462e4cb7c78c18c160bf53873e9e228.png) ![img](https://img-blog.csdnimg.cn/img_convert/56a37f4ef9876b20a1563eaca1f66b4b.png) ![img](https://img-blog.csdnimg.cn/img_convert/6e20bc8f7bb279c1e2873504c6cfaf53.png) ![img](https://img-blog.csdnimg.cn/img_convert/79624eb27ee7147ea153767fae27ead1.png) ![img](https://img-blog.csdnimg.cn/img_convert/0ece64c6b9c6831d8b4895a924251c0d.png) ![img](https://img-blog.csdnimg.cn/img_convert/c8010253ae4871db3e290880152b5040.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!** **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新** **如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)** ![img](https://img-blog.csdnimg.cn/img_convert/116184f57f4358388176c889692db795.png) ### 如何自学黑客&网络安全 #### 黑客零基础入门学习路线&规划 **初级黑客** **1、网络安全理论知识(2天)** ①了解行业相关背景,前景,确定发展方向。 ②学习网络安全相关法律法规。 ③网络安全运营的概念。 ④等保简介、等保规定、流程和规范。(非常重要) **2、渗透测试基础(一周)** ①渗透测试的流程、分类、标准 ②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking ③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察 ④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等 **3、操作系统基础(一周)** ①Windows系统常见功能和命令 ②Kali Linux系统常见功能和命令 ③操作系统安全(系统入侵排查/系统加固基础) **4、计算机网络基础(一周)** ①计算机网络基础、协议和架构 ②网络通信原理、OSI模型、数据转发流程 ③常见协议解析(HTTP、TCP/IP、ARP等) ④网络攻击技术与网络安全防御技术 ⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现 **5、数据库基础操作(2天)** ①数据库基础 ②SQL语言基础 ③数据库安全加固 **6、Web渗透(1周)** ①HTML、CSS和JavaScript简介 ②OWASP Top10 ③Web漏洞扫描工具 ④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等) 恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k 到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗? 如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取! **7、脚本编程(初级/中级/高级)** 在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力. 如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。 **8、超级黑客** 这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。 ![img](https://img-blog.csdnimg.cn/img_convert/3fd39c2ba8ec22649979f245f4221608.webp?x-oss-process=image/format,png) #### 网络安全工程师企业级学习路线 ![img](https://img-blog.csdnimg.cn/img_convert/931ac5ac21a22d230645ccf767358997.webp?x-oss-process=image/format,png) 如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的 视频配套资料&国内外网安书籍、文档&工具 当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。 ![img](https://img-blog.csdnimg.cn/img_convert/153b2778a3fe5198265bed9635d63469.webp?x-oss-process=image/format,png) 一些笔者自己买的、其他平台白嫖不到的视频教程。 ![img](https://img-blog.csdnimg.cn/img_convert/32eb4b22aa740233c5198d3c161b37e8.webp?x-oss-process=image/format,png) **一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** ![img](https://img-blog.csdnimg.cn/img_convert/85f2ded8d6bc1078047720fee9f83e36.png) ss=image/format,png) 一些笔者自己买的、其他平台白嫖不到的视频教程。 ![img](https://img-blog.csdnimg.cn/img_convert/32eb4b22aa740233c5198d3c161b37e8.webp?x-oss-process=image/format,png) **一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** [外链图片转存中...(img-HdFW2y1K-1712812211089)]
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值