一题教你学会构造PHP反序列化POP链

北京皮肤病医院好不好 http://baidianfeng.39.net/a_xcyy/210122/8615704.html

作者简介

王玉琪,安全帮攻防团队成员,擅长Web安全和渗透测试,热衷于CTF和AWD赛事,曾获第四届全国高校移动互联网应用开发创新大赛安全赛一等奖、全国第六届工控系统信息安全攻防竞赛三等奖,目前正在漏洞挖掘的道路上努力中。

01

魔法函数

在构造POP链之前,首先了解一下常见的PHP魔法函数,这也是构造POP的关键。

__construct()//当一个对象创建时被调用__destruct()//当一个对象销毁时被调用__wakeup()//使用unserialize时触发__sleep()//使用serialize时触发__destruct()//对象被销毁时触发__call()//在对象上下文中调用不可访问的方法时触发__get()//用于从不可访问的属性读取数据__set()//用于将数据写入不可访问的属性__toString()//把类当作字符串使用时触发__invoke()//当脚本尝试将对象调用为函数时触发

02

强网“web辅助”题目

POP链构造首先就是要找到头和尾,也就是用户能传入参数的地方(头)和最终要执行函数方法的地方(尾)。找到头尾之后进行反推过程,从尾部开始一步步找到能触发上一步的地方,直到找到传参处,此时完整的POP链就显而易见了。CTF赛中一般尾部就是getflag的方法,头部则是GET/POST传参。下面通过题目详细的展现POP链构造的过程。首先上源码:

class.php




转载请注明:http://www.aierlanlan.com/tzrz/928.html