小迪

PHP反序列化
未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化的过程,从而导致代码执行,SQL注入,目录遍历登不可控后果。在反序列化的过程中自动触发了某些魔术方法。
serialize() //将一个对象转换成一个字符串
 unserialize() //将字符串还原成一个对象
无类的情况
 

 
案例-无类问题-ctf
题目点登录没有反应
 
 右键查看源代码,有一个admin.css
 
第一行提示传参?29524
  对cookie进行反序列化等于key就可以flag
对cookie进行反序列化等于key就可以flag
 对key序列化
  注意是if elseif,如果GET传参是29524的话就不执行flag了
注意是if elseif,如果GET传参是29524的话就不执行flag了
 抓包修改
 
 
案例-有类魔术方法触发

 __construct()//创建对象时触发
 __destruct() //对象被销毁时触发
 __call() //在对象上下文中调用不可访问的方法时触发
 __callStatic() //在静态上下文中调用不可访问的方法时触发
 __get() //用于从不可访问的属性读取数据
 __set() //用于将数据写入不可访问的属性
 __isset() //在不可访问的属性上调用 isset()或 empty()触发
 __unset() //在不可访问的属性上使用 unset()时触发
 __invoke() //当脚本尝试将对象调用为函数时触发
PHP中的几个特殊的魔术方法。
1.__construct():当对象创建(new)时会自动调用,但在unserialize()时是不会自动调用的(构造函数) 
2.__destruct():当对象操作执行完毕后自动执行__destruct()函数的代码。
3.__wakeup():unserialize()时自动调用。
案例-网鼎杯
不是很懂,这里记得在看一遍










