您当前的位置: 首页 >  php

Z3eyOnd

暂无认证

  • 3浏览

    0关注

    117博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CTFshow--php反序列化1

Z3eyOnd 发布时间:2021-09-11 10:33:21 ,浏览量:3

文章目录
    • 简介
    • 入门
    • 反序列化中常见的魔法函数
      • web254
      • web255
    • web256
      • web257
      • web258
    • 为什么需要用urlencode?
    • 补充知识点
      • php中输出打印的方式

简介
php序列化和反序列用到两个函数
序列化:serialize,将对象格式化为一个新的字符串
反序列化:unserialize,将字符串还原为原来的对象。
一般在CTF中,可以通过自己写php代码,并传序列化后的代码,可以覆盖原来的代码,从而改变代码执行过程,达到自己的目的(仅限我的理解)
入门
参考:
https://blog.csdn.net/solitudi/article/details/113588692?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163090819616780357263384%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163090819616780357263384&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-1-113588692.pc_v2_rank_blog_default&utm_term=php%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96&spm=1018.2226.3001.4450

https://blog.csdn.net/q20010619/article/details/108352029?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163093042316780271566242%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163093042316780271566242&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-3-108352029.pc_search_result_hbase_insert&utm_term=php%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96&spm=1018.2226.3001.4187
反序列化中常见的魔法函数
__construct 当一个对象创建时被调用
__destruct 当一个对象销毁时被调用
__wakeup() //执行unserialize()时,先会调用这个函数
__sleep() //执行serialize()时,先会调用这个函数
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据或者不存在这个键都会调用此方法
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当尝试将对象调用为函数时触发
web254

感觉和反序列化没有关系,直接通过URL参数传入,username=xxxxxx&password=xxxxxx

web255

看代码得知,url传参数?username=xxxxxx&password=xxxxxx 并且使得属性isVip=true,才可以得到flag 所以使用unserialize,改变原来代码的isVip属性值

            
关注
打赏
1651657201
查看更多评论
0.0365s