Fork me on GitHub

一道web入门题

9月27日00:00

  这道题是我将hctf_warmup魔改之后得到的,难度比较低,主要还是讲一些web相关的思考方式,所以这篇文章会比较冗长过于详细.(毕竟是给小姑娘入门看的23333).就当M1saka这一次亚萨西了吧

  打开题目之后能够得到一张图片和一个可以点击的hint,点开hint之后会转到hint.php,内容如下:

   原来题目的界面只有一行短短的提示,告诉你flag在哪个文件里面,在这里我加入了一些其他元素(你想让老爹活不长对不对啊),甚至连按f12这种操作都进行了提示.在这里我们可以将所有信息总结为两个提示:

  1. flag在一个名字叫M1saka_M1k0t0的文件里
  2. 我们应该按一下f12试一试 
  3. 有一串奇奇怪怪的字符QWN0dWFsbHkgSSBraW5kIG9mIGxpa2UgdGhpcyBnaXJs

  首先我应该解释一下为什么要按f12:  f12的效果和右键并点击查看页面源代码的功能都是一样的,能够读取到执行当前页面的php或者html,css,JavaScript文件的源码,能够看到一些有效的信息.我知道某个人看到这里一定会产生疑问:php是啥,html是啥,css是啥JavaScript又是啥.......我用自己的语言去解释可能会模糊,还不如照搬百度:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域;

HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字图形动画声音表格链接等。

css:层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

 

  其中PHP是我们需要重点学习并且掌握的一种语言,是一种存在并且作用于服务端(服务器)的后端语言;html,css和JavaScript都是前端语言,进行客户端(即你所看到的浏览器页面)的显示以及数据处理.举个栗子:你所看到的我的博客界面,有很多的专栏,很多的图片,各种颜色的文字,这些都是html,css以及JavaScript的效果.(比如你在我的文章空白处点击会有社会主义核心价值观字幕出现的效果,这就是一段JavaScript代码实现的.)而你去登录一个网站,输入用户名密码或者查询一条信息时,你所输入的数据会传送到服务器上面,由PHP进行处理并且返回登陆结果或者查询结果.我觉得这一段看完之后你应该对这几个以前从来都没有听说过的东西稍微有一点了解了.

  那一串奇奇怪怪的字符是一个base64加密之后的字符串,你可以百度一个在线解密base64网站,把上面那一串东西扔进去看看结果是什么.(这段文字自动变色)

 

 

  于是我们回到刚开始的界面,按下f12能看到源码里面有一段注释:

 

  提醒了一个奇奇怪怪的东西:source.php,如果你联想能力足够丰富的话大概能够明白这是一个PHP类型的文件.source在英文中的意思是源,所以这是源文件,在任何web服务中源文件是最重要文件.但是我们如何去读取他呢?

  你在打开hint时有没有注意到,hint界面的网址与最开始有一些不同,多了一个?file=hint.php .显然这是一个文件读取的方式.在web中我们称之为GET传参,即我们使用GET方式向file这个参数传递一个值,提交到服务器去检查并且执行.GET方式比较简单,直接在url(即你所理解的网址)最后加一个英文问号"?"(中文的不要,岂可休)并且接上参数以及等号直接进行赋值.如果赋值多个参数就使用"&"进行拼接,从而达到一次性传递多个参数的目的.举个例子如果我们百度一个漂亮姐姐的名字会在url里面看到:

  在url的位置我们看到wd(盲猜是word的意思)这个参数是漂亮小姐姐的名字,后面跟了一堆我们无法得知是什么东西的参数(我要是知道我早就把百度给黑了).

  到这里我们可以将刚才的url改成http://47.114.56.100:7777/index.php?file=source.php,从而读取到source.php的内容:

 

 1      class emmm
 2     {
 3         public static function checkFile(&$page)
 4         {
 5             $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
 6             if (! isset($page) || !is_string($page)) {
 7                 echo "you can't see it";
 8                 return false;
 9             }
10 
11             if (in_array($page, $whitelist)) {
12                 return true;
13             }
14             if  (preg_match('/et|\?/im',$page)){
15                 return false;
16             }
17 
18 
19             $_page = mb_substr(
20                 $page,
21                 0,
22                 mb_strpos($page . '?', '?')
23             );
24             if (in_array($_page, $whitelist)) {
25                 return true;
26             }
27 
28             $_page = urldecode($page);
29             $_page = mb_substr(
30                 $_page,
31                 0,
32                 mb_strpos($_page . '?', '?')
33             );
34             if (in_array($_page, $whitelist)) {
35                 return true;
36             }
37             echo "you can't see it";
38             return false;
39         }
40     }
41 
42     if (! empty($_REQUEST['file'])
43         && is_string($_REQUEST['file'])
44         && emmm::checkFile($_REQUEST['file'])
45     ) {
46         include $_REQUEST['file'];
47         exit;
48     } else {
49         echo "<br><img src=\"https://i.loli.net/2020/09/23/sX8ZcC1hNS2U3DQ.jpg" />";
50     }  nice job! ----M1saka 
51 ?>

 

  写到这里已经够你看一会儿的了,有什么看不懂的来问我吧,我先睡了23333,剩下的过两天写。

  九月二十九日,院科协帐篷,开始用爱发电。

  

 

 

 

 

 

  

  

 

posted @ 2020-09-27 01:02  M1saka_L1gh73r  阅读(204)  评论(0编辑  收藏  举报