標籤:php 破解 webshell crack base64
由於學習需要最近註冊了一個國外的php空間 鑒於內建php管理系統體驗太差 想找一個靠譜的webshell來代替 經過幾分鐘的搜尋 終於在網上找到了一個介面和功能都很不錯的php webshell
當我想再加上自己diy的幾個功能時 開啟代碼一看:
竟然是亂碼! 於是。。心中閃過了一些邪惡的想法。。破解它!
首先 我注意到了base64_encode這個函數,於是 寫了一個<?php echo base64_decode($str)?>來講代碼顯示出來 結果出現了下面的一幕:
我尼瑪 比剛才還亂。
又回頭仔細看了看代碼 發現主要解釋加密的代碼部分是這樣寫的:
e'.'va'.'l(gz'.'inf'.'lat'.'e(bas'.'e64_'.'deco'.'de(\'7L35dxzXfSf6......
加密部分採用了base64編碼 但是我忽略了gzinflat()函數!代碼是先將加密部分解碼 然後再解壓縮來執行的!
將eval改成echo 果然:
由於php在輸出網頁時還會自己添加一些標籤影響到代碼的提取 因此我將echo改為了file_put_contents()
file_put_contents("shell.php",gz'.'inf'.'lat'.'e(bas'.'e64_'.'deco'.'de(\'大功告成!
ob_start();define('myaddress',$_SERVER['SCRIPT_FILENAME']);define('envlpass',$password);define('shellname',$shellname);define('myurl',$myurl);if(@get_magic_quotes_gpc()){foreach($_POST as $k => $v) $_POST[$k] = stripslashes($v);foreach($_GET as $k => $v) $_GET[$k] = stripslashes($v);}if(isset($_REQUEST[envlpass])){hmlogin(2);@eval($_REQUEST[envlpass]);exit;}if($_COOKIE['envlpass'] != md5(envlpass)){if($_POST['envlpass']){if($_POST['envlpass'] == envlpass){setcookie('envlpass',md5($_POST['envlpass']));hmlogin();}else{echo '<CENTER>使用者或密碼錯誤</CENTER>';}}islogin($shellname,$myurl);exit;}/*---End Login---*/if(isset($_GET['down'])) do_down($_GET['down']);if(isset($_GET['pack'])){$dir = do_show($_GET['pack']);$zip = new eanver($dir);$out = $zip->out;do_download($out,"eanver.tar.gz");................
總結:①雖然這次只是個簡單的函數替換破解 但是恭喜自己走出了重要的一步
②這次破解充分證明了php代碼的不易加密是一個很大的弊端 它造就了php程式的開放,也造成了眾多的侵權問題。
③不得不承認 作者對php瞭解的很透徹 代碼寫得特別棒 有很多很多值得我學習的地方
④實踐比理論重要的多。
記一次php webshell破解的經曆