极客大挑战 2019 Havefun 1(简单分析,HackBar)
本文最后更新于 8 天前,其中的信息可能已经有所发展或是发生改变。

题目

做法

启动靶机,点进去

常规F12看看源代码
发现这里有被注释了的代码

<!--
        $cat=$_GET['cat'];
        echo $cat;
        if($cat=='dog'){
            echo 'Syc{cat_cat_cat_cat}';
        }
        -->

简要分析一波

前提小知识

$cat $:表示一个自定义的普通变量 $+字符串:表示一个变量名/对象名 双$:表示一个可变变量,用于存储变量的值

$_GET $_GET 是 PHP中预定义的 超全局变量(Superglobal Variable),用于获取通过 HTTP GET请求发送的参数。 数据类型:本质是一个 关联数组,键为参数名,值为参数对应的值

说人话:如题中的

$cat=$_GET['cat'];

就是定义一个叫cat的变量,然后通过 $_GET 从URL参数中获取cat变量的值

echo $cat: echo PHP中有两个基本的输出方式:echo和print echo和print的区别: 1、echo – 可以输出一个或多个字符串 2、print – 只允许输出一个字符串,返回值总为 1 注: echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()

Syc{cat_cat_cat_cat},类似于我们要的flag格式flag{},猜想就是满足上面的条件即可得出我们要的flag

$cat = $_GET['cat']; // 从URL参数中获取cat变量的值 
echo $cat; // 直接输出cat变量的值(存在XSS风险) 
if($cat == 'dog'){ // 判断cat变量是否严格等于字符串'dog' 
    echo 'Syc{cat_cat_cat_cat}'; // 如果条件成立,输出flag 
}

方法一

直接在URL上编写payload 根据上面的分析,我们直接在地址后面加上

/?cat=dog

然后回车,我们就可以得出flag

解释:

(1)

不带斜杠:服务器不知道你到底要访问首页,还是整个站点的根? 让其误解路径,导致参数传不到代码里 带斜杠:就是访问站点的根路径,然后还写入了cat=dog的参数

(2)

  • 满足 $_GET 接收逻辑:必须用 ?参数名=值 的格式,代码才能通过 $_GET['cat'] 拿到值。
  • get传参——参数和 URI 之间用问号?隔开, 参数键值用等号=连接,然后参数之间用连接符&拼接起来

    方法二(思路大差不差,不过利用了一下HackBar)

    F12后点击HackBar V2跳出此页面

然后点击左边的Load URL即可把当前的URL放进框中

然后就像上面的思路一般,直接在后面加入

/?cat=dog

点击Execute,即可得出flag

最后,回到题目提交flag即可

感谢阅读!如果你觉得这篇文章对你有帮助,欢迎扫码赞赏支持,你的鼓励是我持续创作的动力 ❤️

本文为原创内容,转载请注明出处。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇