CTFHub技能树web之RCE(一)

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

第一题:eval执行

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

使用system("ls");语句

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

找到flag文件

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

第二题:文件包含

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

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

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

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

第三题:php://input

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

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

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

第四题:读取源代码

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

直接得到flag

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值