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,剩下的过两天写。

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

  

  

  

一道web入门题的更多相关文章

  1. 洛谷P1028 数的计算 题解 动态规划入门题

    题目链接:https://www.luogu.com.cn/problem/P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 \(n\) ): 先输入一个自然数 \(n(n \ ...

  2. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  3. hdu 1465:不容易系列之一(递推入门题)

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  4. POJ3984 BFS广搜--入门题

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20816   Accepted: 12193 Descriptio ...

  5. 利用简易爬虫完成一道基础CTF题

    利用简易爬虫完成一道基础CTF题 声明:本文主要写给新手,侧重于表现使用爬虫爬取页面并提交数据的大致过程,所以没有对一些东西解释的很详细,比如表单,post,get方法,感兴趣的可以私信或评论给我.如 ...

  6. 关于CTFshow中Web入门42-54

    0x00前记 ​ 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...

  7. hdu 3695:Computer Virus on Planet Pandora(AC自动机,入门题)

    Computer Virus on Planet Pandora Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 256000/1280 ...

  8. poj 2524:Ubiquitous Religions(并查集,入门题)

    Ubiquitous Religions Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 23997   Accepted:  ...

  9. hdu 1754:I Hate It(线段树,入门题,RMQ问题)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. The Triangle (简单动态规划)

    7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...

  2. 基于PHP实现CMS识别

    最近正在开发一款基于PHP实现的Web安全检测平台,写到了CMS识别这一功能,便写一篇文章总结一下. 首先需要梳理的是CMS识别的几种方法: 1.网页源代码特征:例如源代码中包含CMS的名称或是某种特 ...

  3. Texstudio、Latex 大段注释,多行注释 快捷键

    Texstudio.Latex 大段注释,多行注释  快捷键 单行注释:在每行前加 %  即可 大段注释: \usepackage{verbatim} \begin{comment} ... \end ...

  4. 实操ES6之Promise

    箭头函数和this 写Promise的时候,自然而然会使用箭头函数的编写方式.箭头函数就是.Neter们熟知的lambda函数,已经被大部分主流语言支持,也受到了广大码农的交口称赞,但是Jser们却会 ...

  5. C001:打印勾

    程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { printf(" *\n"); p ...

  6. leetcode刷题-71简化路径

    题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录切换到 ...

  7. 深入理解 vue 中 scoped 样式作用域的规则

    哈喽!大家好!我是木瓜太香,今天我们来聊一个 vue 的样式作用域的问题,通常我们开发项目的时候是要在 style 上加上 scoped 来起到规定组件作用域的效果的,所以了解他们的规则也是很有必要的 ...

  8. Mybatis如何执行Select语句,你真的知道吗?

    持续原创输出,点击上方蓝字关注我吧 作者:不才陈某 博客:https://chenjiabing666.github.io 前言 本篇文章是Myabtis源码分析的第三篇,前两篇分别介绍了Mybati ...

  9. dict字典,以及字典的一些基本应用

    dict表示方法: dict={}或d=dict() 1.字典的增:d['元素名']='元素值'.或d.setdefault('key','value') 2.字典的删:d.pop(key).或del ...

  10. C#开发PACS医学影像处理系统(九):序列控件与拖拽

    1.先看结构: 创建WPF用户控件:YourTab 创建WPF用户控件:YourItem 创建选项卡时循环添加item,并设置序列缩略图到控件和异步下载的进度条, 1个病人1个或多个Study检查,1 ...