CTFHub技能树web之RCE(一)

RCE是php的代码执行简称,是Remote Command Exec(远程命令执行)和Remote Code Exec(远程代码执行)的缩写;Command指的是操作系统的命令,code指的是脚本语言(php)的代码。

第一题:eval执行

CTFHub技能树web之RCE(一)_第1张图片

根据代码可以看到该网页使用request得到cmd参数并使用eval执行cmd的代码,其中isset函数用于检测是否传入了一个名为cmd的变量的值(是否非空),eval是将一串字符作为php代码执行,$_REQUEST默认包含了$_GET,$_POST 和 $_COOKIE 的数组,本题中通过hackbar使用get方法传递参数

使用system("ls");语句

CTFHub技能树web之RCE(一)_第2张图片

flag文件不在本级目录中,查看上一层的目录

CTFHub技能树web之RCE(一)_第3张图片

找到flag文件

CTFHub技能树web之RCE(一)_第4张图片

使用cat指令获取flag文件中的flag

第二题:文件包含

CTFHub技能树web之RCE(一)_第5张图片

strpos函数的作用是查找字符串首次出现的位置,即file中不能包含flag这个字符串

题目中有一个shell的超链接,点开查看

CTFHub技能树web之RCE(一)_第6张图片

本题中通过file文件包含shell.txt,并通过控制shell.txt中的ctfhub参数实现RCE。

CTFHub技能树web之RCE(一)_第7张图片

flag文件在上一层目录中,使用cat读取flag文件

CTFHub技能树web之RCE(一)_第8张图片

第三题:php://input

CTFHub技能树web之RCE(一)_第9张图片

substr函数是返回字符串的子串,意思是如果file的前六个字符为php://,那么就会包含file文件

查看phpinfo,allow_url_fopen和allow_url_include状态均为On。

allow_url_fopen是一个在PHP中经常使用的开关,它允许PHP从远程服务器下载数据或打开远程文件。可以将其视为一个开关,打开它可以允许我们读取远程文件,关闭它则可以防止远程文件读取。

allow_url_include作用是是否允许includeI()和require()函数包含URL(HTTP,HTTPS)作为文件处理

只有当allow_url_fopen=On和allow_url_include=On时,include等其他包含函数才会将URL代表的文件包含执行

因此本题中可以让file等于php://input,从而通过post传参进行RCE

CTFHub技能树web之RCE(一)_第10张图片

使用hackbar传递POST请求,file为php://input使得POST参数可以作为原始请求的数据,使用bp抓包,即可看到执行POST参数中代码后的内容

CTFHub技能树web之RCE(一)_第11张图片

使用cat获取flag文件中的内容

CTFHub技能树web之RCE(一)_第12张图片

第四题:读取源代码

CTFHub技能树web之RCE(一)_第13张图片

先尝试使用php://input,发现无回显,使用php://filter

CTFHub技能树web之RCE(一)_第14张图片

直接得到flag

CTFHub技能树web之RCE(一)_第15张图片

你可能感兴趣的:(网络安全)