ホームページ  >  記事  >  バックエンド開発  >  WebサイトユーザーのパスワードをCSSファイルに保存するPHP実装を説明する例

WebサイトユーザーのパスワードをCSSファイルに保存するPHP実装を説明する例

小云云
小云云オリジナル
2017-12-23 16:06:551174ブラウズ

本文主要介绍了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[&#39;DOCUMENT_ROOT&#39;].&#39;/&#39;;
 $cachedir = $doc_root_uri . &#39;public/cache&#39;;
 //文件类型,j为js,c为css
 $type=isset($_GET[&#39;t&#39;])?($_GET[&#39;t&#39;]==&#39;j&#39;||$_GET[&#39;t&#39;]==&#39;c&#39;?$_GET[&#39;t&#39;]:&#39;&#39;):&#39;&#39;;
 //存放js和css文件的基目录, 例如:?b=public.js 代表的是/public/js文件夹,出发点是网站根目录
 //基目录参数不是必须的,如果有基目录那么这个基目录就会附加在文件名之前
 $base =isset($_GET[&#39;b&#39;])?($doc_root_uri.str_replace(&#39;.&#39;,&#39;/&#39;,$_GET[&#39;b&#39;])):$doc_root_uri;
 //文件名列表,文件名不带后缀名.比如基目录是
 //文件名的格式是 :基目录(如果有)+文件包名+文件名
 //例如:类型是j,
 //  文件名public.js.jquery
 //  如果有基路径且为public,
 //  那么转换后的文件名就是/public/public/js/jquery.js
 //  如果没有基路径
 //  那么转换后的文件名就是/public/js/jquery.js
 //多个文件名之间用,分隔
 $fs=isset($_GET[&#39;fs&#39;])?str_replace(&#39;.&#39;,&#39;/&#39;,$_GET[&#39;fs&#39;]):&#39;&#39;;
 $fs=str_replace(&#39;,&#39;,&#39;.&#39;.($type==&#39;j&#39;?&#39;js,&#39;:&#39;css,&#39;),$fs);
 $fs=$fs.($type==&#39;j&#39;?&#39;.js&#39;:&#39;.css&#39;);
 if($type==&#39;&#39;||$fs==&#39;&#39;){$is_bad_request=true;}
 //die($base);
 if($is_bad_request){header ("HTTP/1.0 503 Not Implemented");}
 $file_type=$type==&#39;j&#39;?&#39;javascript&#39;:&#39;css&#39;;
 $elements = explode(&#39;,&#39;,preg_replace(&#39;/([^?]*).*/&#39;, &#39;\1&#39;, $fs));
 // Determine last modification date of the files
 $lastmodified = 0;
 while (list(,$element) = each($elements)) {
   $path =$base . &#39;/&#39; . $element;
   if (($type == &#39;j&#39; && substr($path, -3) != &#39;.js&#39;) ||
     ($type == &#39;c&#39; && substr($path, -4) != &#39;.css&#39;)) {
     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 . &#39;-&#39; . md5($fs);
 header ("Etag: \"" . $hash . "\"");
 if (isset($_SERVER[&#39;HTTP_IF_NONE_MATCH&#39;]) &&
   stripslashes($_SERVER[&#39;HTTP_IF_NONE_MATCH&#39;]) == &#39;"&#39; . $hash . &#39;"&#39;)
 {
   // Return visit and no modifications, so do not send anything
   header ("HTTP/1.0 304 Not Modified");
   header ("Content-Type: text/" . $file_type);
   header (&#39;Content-Length: 0&#39;);
 }
 else
 {
   // First time visit or files were modified
   if ($cache)
   {
     // Determine supported compression method
     $gzip = strstr($_SERVER[&#39;HTTP_ACCEPT_ENCODING&#39;], &#39;gzip&#39;);
     $deflate = strstr($_SERVER[&#39;HTTP_ACCEPT_ENCODING&#39;], &#39;deflate&#39;);
     // Determine used compression method
     $encoding = $gzip ? &#39;gzip&#39; : ($deflate ? &#39;deflate&#39; : &#39;none&#39;);
     // Check for buggy versions of Internet Explorer
     if (!strstr($_SERVER[&#39;HTTP_USER_AGENT&#39;], &#39;Opera&#39;) &&
       preg_match(&#39;/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;], $matches)) {
       $version = floatval($matches[1]);
       if ($version < 6)
         $encoding = &#39;none&#39;;
       if ($version == 6 && !strstr($_SERVER[&#39;HTTP_USER_AGENT&#39;], &#39;EV1&#39;))
         $encoding = &#39;none&#39;;
     }
     // Try the cache first to see if the combined files were already generated
     $cachefile = &#39;cache-&#39; . $hash . &#39;.&#39; . $file_type . ($encoding != &#39;none&#39; ? &#39;.&#39; . $encoding : &#39;&#39;);
     if (file_exists($cachedir . &#39;/&#39; . $cachefile)) {
       if ($fp = fopen($cachedir . &#39;/&#39; . $cachefile, &#39;rb&#39;)) {
         if ($encoding != &#39;none&#39;) {
           header ("Content-Encoding: " . $encoding);
         }
         header ("Content-Type: text/" . $file_type);
         header ("Content-Length: " . filesize($cachedir . &#39;/&#39; . $cachefile));
         fpassthru($fp);
         fclose($fp);
         exit;
       }
     }
   }
   // Get contents of the files
   $contents = &#39;&#39;;
   reset($elements);
   while (list(,$element) = each($elements)) {
     $path = $base . &#39;/&#39; . $element;
     $contents .= "\n\n" . file_get_contents($path);
   }
   // Send Content-Type
   header ("Content-Type: text/" . $file_type);
   if (isset($encoding) && $encoding != &#39;none&#39;)
   {
     // Send compressed contents
     $contents = gzencode($contents, 9, $gzip ? FORCE_GZIP : FORCE_DEFLATE);
     header ("Content-Encoding: " . $encoding);
     header (&#39;Content-Length: &#39; . strlen($contents));
     echo $contents;
   }
   else
   {
     // Send regular contents
     header (&#39;Content-Length: &#39; . strlen($contents));
     echo $contents;
   }
   // Store cache
   if ($cache) {
     if ($fp = fopen($cachedir . &#39;/&#39; . $cachefile, &#39;wb&#39;)) {
       fwrite($fp, $contents);
       fclose($fp);
     }
   }
 }

相关推荐:

使用Cookies保存网站历史浏览记录实例代码_javascript技巧

jquery.cookie.js实现用户登录保存密码功能的方法_jquery

如何使用jquery对表格数据进行增加、保存、删除操作代码详解

以上がWebサイトユーザーのパスワードをCSSファイルに保存するPHP実装を説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。