本文主要是介绍Buuctf-Web-[极客大挑战 2019]Havefun 题解思路总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
启动靶机
做题过程
第一步——查看源代码
看到此处有被注释掉的php代码
<!--$cat=$_GET['cat'];echo $cat;if($cat=='dog'){echo 'Syc{cat_cat_cat_cat}';}-->
php采用c语言的语法,但有一些区别。
$cat
$
符号的意思:表示一个自定义的普通变量
$
加上字符串,就是一个变量名或对象名
拓展:
$$
符号的意思:表示一个可变变量,用于储存变量的值$_GET
$_GET
变量是一个数组,内容是由HTTP GET方式发送的变量名和值
$_GET
用于收集来自 method=“get” 的表单中的值。从带有GET 方法
的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)
注:
属于GET请求的有:from标签中method="get"
在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的echo $cat;
echo
PHP中有两个基本的输出方式:echo
和
echo和print的区别:
1、echo - 可以输出一个或多个字符串
2、print - 只允许输出一个字符串,返回值总为 1
注:
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。Syc{dog_dog_dog_dog}这句话猜测是和后端有关的。
这一段的代码就提示我们,当cat=dog时,会输出一段东西。
那么此时输出的东西很可能就是和flag相关的。
所以我们接下来就先构造payload,将这段东西输出来看看。
第二步——构造payload
知识点:
1.相对路径和绝对路径
2.访问路径问题—带斜杠和不带斜杠的区别
方法一:直接在网页地址栏中构造payload
原先的地址
然后在地址后面加上
/?cat=dog
因为这里是绝对路径,所以要自己加一个斜杠后,再写上传递参数“?cat=dog”(由第一步源代码中的
$_GET
可以知道,此处为GET请求)
方法二:使用HackBar构造payload
点击“Load URL”,将地址栏url框下来
输入
?cat=dog //(?表示传参)
然后点击“Execute”
得到flag
flag{e391e786-e24f-4b19-8cd4-651300cb0200}
思路总结
题目类型:
- 网页传参
做题步骤:
- 查看网页源代码
- 构造payload
这篇关于Buuctf-Web-[极客大挑战 2019]Havefun 题解思路总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!