【XCTF】 Web进阶区部分 WriteUp(一)


终于搭建了自己的网站,已经初具形态,之后大部分博文都会发布在自己的网站上,少量会同步在CSDN,小伙伴们可以去那里看我的一些学习分享呦😉

(最近在申请备案,因此网站暂时无法访问……)

传送门:https://www.yyxzz.net

1、unserialize3

题目是一段php代码,是反序列化题目,需要将序列化结果通过code传递。
1602406299342.png

源码保存到本地,添加序列化代码进行审计和输出测试,需要补全大括号

<?php 

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

$s = new xctf;
echo(serialize($s));

?>

首先发现,代码中存在__wakeup()魔术方法,该魔术方法在反序列化操作执行前调用,用于初始化操作,如获取必要资源等。

但是本题中__wakeup()内容是结束程序,因此很明显本题是要利用__wakeup()魔术方法的失效漏洞,即在反序列化时,当对象属性个数大于真实个数,就会绕过该魔术方法直接执行反序列化操作。

执行该代码,得到以下序列化结果:

O:4:"xctf":1:{s:4:"flag";s:3:"111";}

将属性数量改为大于当前数量的值,比如2,然后发包,即可得到flag
1602405430595.png

2、Web_php_unserialize

一个反序列化题目,页面直接给出了源码:

<?php 
class Demo {
    
    private $file = 'index.php';
    public function __construct($file) {
    
        $this->file = $file; 
    }
    function __destruct() {
    
        echo @highlight_file($this->file, true); 
    }
    function __wakeup() {
    
        if ($this->file != 'index.php') {
    
            //the secret is in the fl4g.php
            $this->file = 'index.php'; 
        } 
    } 
}
if (isset($_GET['var'])) {
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值