首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >3分钟短文 | PHP时不时蹦出这串神秘字符,有认识的吗?

3分钟短文 | PHP时不时蹦出这串神秘字符,有认识的吗?

作者头像
程序员小助手
发布于 2020-07-17 06:33:48
发布于 2020-07-17 06:33:48
45700
代码可运行
举报
文章被收录于专栏:程序员小助手程序员小助手
运行总次数:0
代码可运行

引言

有这样一个字符串,时不时在 PHP 程序内出现,当你把它贴到搜索引擎里搜索时,命中率几乎没有。怎么来的?如何生成的?

今天我们就来聊一聊 YTowOnt9。

深入学习

经常与编码解码打交道,对这样的字符串,你应该会有一个潜意识的认识。是不是特别像 base64 encode 之后的内容。我们先用一些随机数,看看 base64 encode 之后的样子。

为了模拟PHP的情况,我们没有使用linux系统下的 base64 工具,而是使用内置函数 base64_encode 。

为了拿到固定长度的随机字符串,我们使用了之前文章中推荐的方式,使用 openssl_random_pseudo_bytes 生成更好的随机数字节,然后使用 bin2hex 进行16进制化,所得就是纯字符串。

如果对上面的字符进行 base64 decode 会得到什么呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo base64_decode('YTowOnt9');

命令行中执行之后得到如下输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:0:{}

如果您使用过PHP内置的序列化函数应该对这个不陌生。我们看一下序列化函数 serialize,在将对象序列化进行存储到缓存,甚至是到数据库内,你一定见到过。

serialize 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

举一个简单的例子,比如具有不同数据类型的数组序列化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$arrToPack = array('Lorem ipsum dolor sit amet', 8726348723, true);
echo serialize($arrToPack);

输出内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:3:{i:0;s:26:"Lorem ipsum dolor sit amet";i:1;i:8726348723;i:2;b:1;}

可以看到序列化之后的内容,包含了数组的内容,结构,长度和值。反序列化的时候,就可以轻松实现。

揭晓答案

好了,前面的基础内容我们都铺垫好了,下面把主要力量放在将这个字符串进行反序列化,看能得到一个什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var_dump(unserialize(base64_decode("YTowOnt9")));

结果输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array(0) {}

原来是一个空数组。

写在最后

所以大家以后再看到这样的编码字符串的时候,会在心中有一个意识,判断应该是从程序的那些阶段生成的,以及用来做什么的,这样调试起来会顺手的多。

Happy coding :_)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2021年12月 攻防世界-进阶题-WEB-010(unserialize3)
文章目录 一、unserialize3 二、使用步骤 1.点击获取在线场景 2.进入页面 3.反序列化漏洞 总结 php反序列化中__wakeup漏洞的利用 ---- 一、unserialize3 题
愚公搬代码
2021/12/28
7350
【愚公系列】2021年12月 攻防世界-进阶题-WEB-010(unserialize3)
【安洵杯 2019】easy_serialize_php
我们目的是通过file_get_content()读取敏感文件,通过提示在phpinfo中发现可疑文件
ph0ebus
2023/05/16
6500
【愚公系列】2022年01月 攻防世界-进阶题-WEB-011(Web_php_unserialize)
文章目录 一、Web_php_unserialize 二、使用步骤 1.点击获取在线场景 总结 一、Web_php_unserialize 题目链接:https://adworld.xctf.org.
愚公搬代码
2022/02/17
6750
【愚公系列】2022年01月 攻防世界-进阶题-WEB-011(Web_php_unserialize)
CTF竞赛 | PHP反序列化基础
通过序列化与反序列化我们可以很方便的在PHP中传递对象,下面小编给大家介绍反序列化的原理和一些常见的利用方式。
安全小王子
2021/02/24
1.3K0
CTF竞赛 | PHP反序列化基础
实验吧“一道超级简单的登陆题”
刚背完科一,脑袋还是晕乎乎的,开始码文,希望各位读者大大,不要骂我,我还是遵守承诺一天一更,用的实验吧
天钧
2019/07/28
1.3K0
PHP反序列化字符逃逸
PHP在反序列化时,底层代码是以 ; 作为字段的分隔,,以 } 作为结尾(字符串除外),并根据长度来判断内容。
ly0n
2020/11/04
5880
PHP反序列化字符逃逸
CTF杂谈之PHP魔法与CBC加密
PHP语言的开发者在几乎所有内置函数以及基本结构中使用了很多松散的比较和转换,防止程序中的变量因为程序员的不规范而频繁的报错,然而这却带来了安全问题。也正是因为这些PHP特性,使得它频繁出现在各类CTF题目中。 在开始今天的重点之前,我们先复习一下以前遇到过的一些PHP黑魔法。
tinyfisher
2019/11/20
1.9K0
CTF杂谈之PHP魔法与CBC加密
CTFshow之web入门反序列化
PHP反序列化实际上已经开始是Web安全的进阶操作了,虽然在这个时代Web选手上分极其困难,PHP反序列化已经成为了基础…..
十二惊惶
2024/02/28
4200
9个必须掌握的实用PHP函数和功能
即使使用 PHP 多年,也会偶然发现一些未曾了解的函数和功能。其中有些是非常有用的,但没有得到充分利用。并不是所有人都会从头到尾一页一页地阅读手册和函数参考! 1、任意参数数目的函数 你可能已经知道,PHP 允许定义可选参数的函数。但也有完全允许任意数目的函数参数的方法。以下是可选参数的例子: // function with 2 optional arguments function foo($arg1 = ”, $arg2 = ”) { echo “arg1: $arg1n”; echo “arg2:
wangxl
2018/03/07
9810
PHP反序列化漏洞
魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法)
Andromeda
2022/10/27
1.1K0
PHP反序列化漏洞
2022北京工业互联网安全大赛初赛WP-Web
这次比赛Web只有两道题, 因为早上要上课到十二点才放学, 但是比赛三点多就比赛结束了, 所以做的很匆忙, 第一题的有两层(这点搞得我很难受…), 第二题的话就是一个使用引用修改变量
h0cksr
2023/05/18
8110
CVE-2024-2054php反序列化
PHP序列化是将PHP变量转换为可存储的字符串的过程。序列化后的字符串可以保存在文件中,或者在网络上传输。反序列化是将序列化的字符串恢复成PHP变量的过程。
Ms08067安全实验室
2024/04/10
2040
CVE-2024-2054php反序列化
3分钟短文 | PHP伪随机Token生成器,实地测试,效果感人!
我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况。
程序员小助手
2020/07/16
9960
CTFshow刷题日记-WEB-反序列化(web254-278)PHP反序列化漏洞、pop链构造、PHP框架反序列化漏洞、python反序列化漏洞
只要 get 传参反序列化后的字符串有 ctfshow_i_love_36D 就可以
全栈程序员站长
2022/09/14
2.2K0
CTFshow刷题日记-WEB-反序列化(web254-278)PHP反序列化漏洞、pop链构造、PHP框架反序列化漏洞、python反序列化漏洞
PHP的反序列化和POP链利用
POP面向属性编程,常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程(Return-Oriented Programing)的原理相似,都是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击者邪恶的目的。类似于PWN中的ROP,有时候反序列化一个对象时,由它调用的__wakeup()中又去调用了其他的对象,由此可以溯源而上,利用一次次的“gadget”找到漏洞点。
Andromeda
2023/10/21
1.2K0
PHP的反序列化和POP链利用
PHP反序列化笔记
当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行
Ms08067安全实验室
2020/02/19
1.4K0
PHP反序列化笔记
PHP一些常见的漏洞梳理
以下主要是近期对php一些常见漏洞的梳理,包含php文件包含、php反序列化漏洞以及php伪协议。其中 :
天钧
2020/09/14
4.8K0
PHP一些常见的漏洞梳理
看代码学安全(11) - unserialize反序列化漏洞
大家好,我们是红日安全-代码审计小组。最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。现在大家所看到的系列文章,属于项目 第一阶段 的内容,本阶段的内容题目均来自 PHP SECURITY CALENDAR 2017 。对于每一道题目,我们均给出对应的分析,并结合实际CMS进行解说。在文章的最后,我们还会留一道CTF题目,供大家练习,希望大家喜欢。下面是 第11篇 代码审计文章:
用户1631416
2018/12/19
1K0
看代码学安全(11) - unserialize反序列化漏洞
[golang][hugo]使用Hugo搭建静态站点
hugo下载地址:https://github.com/gohugoio/hugo
landv
2019/11/30
1.6K0
NET 9 重磅发布
在 .NET 9 中,System.Text.Json 为 JSON 序列化带来了更智能的选项。无论是 Web 应用开发还是自定义格式的需求,新的 JSON 序列化功能让一切变得简单高效。
郑子铭
2024/11/23
2860
NET 9 重磅发布
相关推荐
【愚公系列】2021年12月 攻防世界-进阶题-WEB-010(unserialize3)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档