小迪
https://www.bilibili.com/video/BV1JZ4y1c7ro?p=36&spm_id_from=333.880.my_history.page.click
PHP反序列化
未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化的过程,从而导致代码执行,SQL注入,目录遍历登不可控后果。在反序列化的过程中自动触发了某些魔术方法。
serialize() //将一个对象转换成一个字符串 unserialize() //将字符串还原成一个对象
无类的情况
案例-无类问题-ctf
https://ctf.bugku.com/challenges/detail/id/109.html
题目点登录没有反应 右键查看源代码,有一个admin.css
第一行提示传参?29524 对cookie进行反序列化等于key就可以flag 对key序列化 注意是if elseif,如果GET传参是29524的话就不执行flag了 抓包修改
案例-有类魔术方法触发
参考:https://www.cnblogs.com/20175211lyz/p/11403397.html
__construct()//创建对象时触发 __destruct() //对象被销毁时触发 __call() //在对象上下文中调用不可访问的方法时触发 __callStatic() //在静态上下文中调用不可访问的方法时触发 __get() //用于从不可访问的属性读取数据 __set() //用于将数据写入不可访问的属性 __isset() //在不可访问的属性上调用 isset()或 empty()触发 __unset() //在不可访问的属性上使用 unset()时触发 __invoke() //当脚本尝试将对象调用为函数时触发
PHP中的几个特殊的魔术方法。
1.__construct():当对象创建(new)时会自动调用,但在unserialize()时是不会自动调用的(构造函数)
2.__destruct():当对象操作执行完毕后自动执行__destruct()函数的代码。
3.__wakeup():unserialize()时自动调用。
案例-网鼎杯
https://www.ctfhub.com/#/challenge
不是很懂,这里记得在看一遍
|