本文主要介紹了PHP實現儲存網站使用者密碼到css檔案(通用型),的執行個體代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下,希望能協助到大家。
很多時候呢,我們拿到一個shell以後,偶爾會遇到密碼解不了的情況,用xss收集cookie吧,感覺不方便;利用xss平台劫持表單吧,感覺麻煩,也會擔心自己想要的密碼別人也copy了一份等等情況吧,這個時候我們就需要自己想辦法來收集想要的PWD……
最簡單了,看別人的登陸介面如下:
I春秋的登陸介面,我們可以看到使用者和密碼的的name屬性分別是:“username還有password“,當然針對i春秋這樣的cms,你若是巧合的擁有這樣類似的網站shell,
然後我們再找一個一下thinkphp的登陸介面:
其實也是看賬戶 還有 密碼的name屬性:“user 還有 password“,其實登陸中的name都差不多,那麼我們就可以直接在shell中找到登陸檔案 ,然後修改相關內容即可。
那麼問題來了,很多人會感覺到登陸的檔案很繁瑣或者是不好找什麼的,那麼最好的辦法就是我們自己寫一個抓取登陸時候post資料的指令碼,然後用相關的檔案來include它,這樣就完成了既保證網站安全運行,又保障了你能夠得到你想要的密碼。驚喜不驚喜,意外不意外。
再看一下我的網站後台,很簡單,直接admin目錄,啥也不說了,直接找到我的admin目錄,include我們的指令碼,就拿到了管理員的密碼
我是不是說多了怎麼扯犢子到管理員的密碼了,我日啊,罪過罪過,我是故意的,你沒有聽錯,我就是故意的,This is bypass ,this is a gold key,when you wonna be get someone else's password .
哈哈,你開心了嗎,兄弟們
其實,對於那種開始就讓你登陸的網站,你可以從它的index.php檔案來進行循規蹈矩,看它的require 或者 include等的調用檔案,只要和登陸有關係,或者直接可以說成是登陸的過程中會調用到的檔案來說直接把咱們研究的檔案include其中即可拿到密碼。
囉嗦了這麼久,上面這句才是重點,讓你們失望了,小弟的語言群組織能力需要聯絡,那麼就總結一句話吧:凡是登
陸的過程有調用到的檔案,咱麼那就可以include進去,然後就拿到密碼了!!
最後上一張我利用的圖片,不許激動哦
PS:下面看段執行個體代碼php使用gzip壓縮傳輸js和css檔案的方法
<?php /** * 完整調用樣本: * 1、combine.php?t=j&b=public&fs=jslib.jquery,function * * 該例子調用的是網站根目錄下的public/jslib/jquery.js和public/function.js * * 2、combine.php?t=j&fs=jslib.jquery,function * * 該例子調用的是網站根目錄下的jslib/jquery.js和function.js * * 3、combine.php?t=c&b=public.css&fs=common,index * * 該例子調用的是網站根目錄下的public/css/common.css和public/css/index.css * * 4、combine.php?t=c&fs=css.common * 該例子調用的是網站根目錄下的css/common.css * * 注:多個檔案名稱之間用,分隔;只有一個檔案名稱最後不要有, * 用,分隔的多個檔案會被壓縮排一個檔案,一次性傳給瀏覽器 **/ $is_bad_request=false; $cache = true; $doc_root_uri=$_SERVER['DOCUMENT_ROOT'].'/'; $cachedir = $doc_root_uri . 'public/cache'; //檔案類型,j為js,c為css $type=isset($_GET['t'])?($_GET['t']=='j'||$_GET['t']=='c'?$_GET['t']:''):''; //存放js和css檔案的基目錄, 例如:?b=public.js 代表的是/public/js檔案夾,出發點是網站根目錄 //基目錄參數不是必須的,如果有基目錄那麼這個基目錄就會附加在檔案名稱之前 $base =isset($_GET['b'])?($doc_root_uri.str_replace('.','/',$_GET['b'])):$doc_root_uri; //檔案名稱列表,檔案名稱不帶尾碼名.比如基目錄是 //檔案名稱的格式是 :基目錄(如果有)+檔案包名+檔案名稱 //例如:類型是j, // 檔案名稱public.js.jquery // 如果有基路徑且為public, // 那麼轉換後的檔案名稱就是/public/public/js/jquery.js // 如果沒有基路徑 // 那麼轉換後的檔案名稱就是/public/js/jquery.js //多個檔案名稱之間用,分隔 $fs=isset($_GET['fs'])?str_replace('.','/',$_GET['fs']):''; $fs=str_replace(',','.'.($type=='j'?'js,':'css,'),$fs); $fs=$fs.($type=='j'?'.js':'.css'); if($type==''||$fs==''){$is_bad_request=true;} //die($base); if($is_bad_request){header ("HTTP/1.0 503 Not Implemented");} $file_type=$type=='j'?'javascript':'css'; $elements = explode(',',preg_replace('/([^?]*).*/', '\1', $fs)); // Determine last modification date of the files $lastmodified = 0; while (list(,$element) = each($elements)) { $path =$base . '/' . $element; if (($type == 'j' && substr($path, -3) != '.js') || ($type == 'c' && substr($path, -4) != '.css')) { header ("HTTP/1.0 403 Forbidden"); exit; } if (substr($path, 0, strlen($base)) != $base || !file_exists($path)) { header ("HTTP/1.0 404 Not Found"); exit; } $lastmodified = max($lastmodified, filemtime($path)); } // Send Etag hash $hash = $lastmodified . '-' . md5($fs); header ("Etag: \"" . $hash . "\""); if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) == '"' . $hash . '"') { // Return visit and no modifications, so do not send anything header ("HTTP/1.0 304 Not Modified"); header ("Content-Type: text/" . $file_type); header ('Content-Length: 0'); } else { // First time visit or files were modified if ($cache) { // Determine supported compression method $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'); $deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate'); // Determine used compression method $encoding = $gzip ? 'gzip' : ($deflate ? 'deflate' : 'none'); // Check for buggy versions of Internet Explorer if (!strstr($_SERVER['HTTP_USER_AGENT'], 'Opera') && preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) { $version = floatval($matches[1]); if ($version < 6) $encoding = 'none'; if ($version == 6 && !strstr($_SERVER['HTTP_USER_AGENT'], 'EV1')) $encoding = 'none'; } // Try the cache first to see if the combined files were already generated $cachefile = 'cache-' . $hash . '.' . $file_type . ($encoding != 'none' ? '.' . $encoding : ''); if (file_exists($cachedir . '/' . $cachefile)) { if ($fp = fopen($cachedir . '/' . $cachefile, 'rb')) { if ($encoding != 'none') { header ("Content-Encoding: " . $encoding); } header ("Content-Type: text/" . $file_type); header ("Content-Length: " . filesize($cachedir . '/' . $cachefile)); fpassthru($fp); fclose($fp); exit; } } } // Get contents of the files $contents = ''; reset($elements); while (list(,$element) = each($elements)) { $path = $base . '/' . $element; $contents .= "\n\n" . file_get_contents($path); } // Send Content-Type header ("Content-Type: text/" . $file_type); if (isset($encoding) && $encoding != 'none') { // Send compressed contents $contents = gzencode($contents, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE); header ("Content-Encoding: " . $encoding); header ('Content-Length: ' . strlen($contents)); echo $contents; } else { // Send regular contents header ('Content-Length: ' . strlen($contents)); echo $contents; } // Store cache if ($cache) { if ($fp = fopen($cachedir . '/' . $cachefile, 'wb')) { fwrite($fp, $contents); fclose($fp); } } }