一道web入门题
9月27日00:00
这道题是我将hctf_warmup魔改之后得到的,难度比较低,主要还是讲一些web相关的思考方式,所以这篇文章会比较冗长过于详细.(毕竟是给小姑娘入门看的23333).就当M1saka这一次亚萨西了吧
打开题目之后能够得到一张图片和一个可以点击的hint,点开hint之后会转到hint.php,内容如下:
原来题目的界面只有一行短短的提示,告诉你flag在哪个文件里面,在这里我加入了一些其他元素(你想让老爹活不长对不对啊),甚至连按f12这种操作都进行了提示.在这里我们可以将所有信息总结为两个提示:
- flag在一个名字叫M1saka_M1k0t0的文件里
- 我们应该按一下f12试一试
- 有一串奇奇怪怪的字符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入门题的更多相关文章
- 洛谷P1028 数的计算 题解 动态规划入门题
题目链接:https://www.luogu.com.cn/problem/P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 \(n\) ): 先输入一个自然数 \(n(n \ ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- hdu 1465:不容易系列之一(递推入门题)
不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- POJ3984 BFS广搜--入门题
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20816 Accepted: 12193 Descriptio ...
- 利用简易爬虫完成一道基础CTF题
利用简易爬虫完成一道基础CTF题 声明:本文主要写给新手,侧重于表现使用爬虫爬取页面并提交数据的大致过程,所以没有对一些东西解释的很详细,比如表单,post,get方法,感兴趣的可以私信或评论给我.如 ...
- 关于CTFshow中Web入门42-54
0x00前记 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...
- hdu 3695:Computer Virus on Planet Pandora(AC自动机,入门题)
Computer Virus on Planet Pandora Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 256000/1280 ...
- poj 2524:Ubiquitous Religions(并查集,入门题)
Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 23997 Accepted: ...
- 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 ...
随机推荐
- windows-服务器-配置一个及多个-Apache-Tomcat
问题:如何在一台服务器上发布了几个Tomcat的系统???怎么配置环境变量?怎么设置Tomcat? 2020/8月更新,由于之前的java的环境变量有点绕,此次新加一个流程设计图 一.需求: 一台wi ...
- 5 art-template
npm 在终端命令下执行装包,就会在该目录下产生一个node_modules包 art-template地址:https://aui.github.io/art-template/zh-cn/docs ...
- 关于取表中id最大值+1的select语句,哪种效率更高?
需求:取stock表中id最大值+1,作为下一个id值. 特殊情况:考虑到表中会没有值,max(id)会返回空,因此需要用case when进行判断. 实现一:select (case max(id) ...
- docker 容器中部署 Go 服务时,请求 https 文件时抛错
错误提示: Get https://res.ddkt365.com/ddktRes/imageRes/wx_headimg/0f1d9e55913c22bcaf7cca9b38048d29.jpeg: ...
- centos7图形化安装oracle11g
#设置主机名 hostnamectl set-hostname oracle #yum安装 yum -y install unzip vim* bash-completion bash-complet ...
- appium 基础二:常用api接口
一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...
- Java反射库介绍
本文主要罗列了Java反射中使用比较多的一些方法,主要都是来自 java.lang.reflect包下的Field.Method 和 Constructor 等三个类,希望对大家有帮助!! 介绍 ja ...
- js实现隔行变色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- canvas学习作业,模仿做一个祖玛的小游戏
这个游戏的原理我分为11个步骤,依次如下: 1.布局, 2.画曲线(曲线由两个半径不同的圆构成) 3.画曲线起点起始圆和曲线终点终止圆 4.起始的圆动起来, 5.起始的圆沿曲线走起来 6.起始的圆沿曲 ...
- Kubernetes调度流程与安全(七)
一.Kubernetes中的调度流程 1,介绍 Scheduler 是 k8s 中的调度器,主要的任务是把定义的 Pod 分配到集群的节点上.Scheduler 是作为一个单独的程序运行的,启动之后会 ...