من سوالی دارم که در مورد آسیب پذیری PHP کار می کنم. در زیر قطعه کد آمده است. در اصل ، من باید مطالب get_flag.php را چاپ کنم.

قطار افکار من این است که موارد زیر می تواند آسیب پذیری های موجود در کد

  1. باشد [ global $ secret متغیر
  2. عملکرد unserialized_safe
  3. hash_equals hash_equals ساخته شده در عملکرد PHP

حمله در جایی خواهد بود که در آن می توانید مقدار جهانی را بدست آورید. راز و سپس ایجاد یک payload در کوکی برای سوء استفاده از عملکرد unserialized_safe برای چاپ محتوای get_flag.php . برای انجام این کار ، من باید اطمینان حاصل کنم که می توانم امضای بار را محاسبه کنم تا حلقه وارد قسمت غیرمجاز شود.

سوال من این است ، چگونه می توانم ارزش راز جهانی را بدست آورم در وهله اول؟ یا چیزی وجود دارد که گمشده ام.

پیشاپیش متشکرم!

 نام کاربری
            if ($ this-> show_flag === TRUE) $ str. = ''. getFlag ($ this-> نام کاربری)؛
            بازگشت $ str؛
        }
    }

    علامت عملکرد ($ str) {
        راز جهانی جهانی؛
        هش بازگشت ('sha256' ، $ secret. $ str)؛
    }

    عملکرد unserialize_safe ($ $) function
        بازگشت غیرمترقبه ($ str، ['allowed_classes' => ['Hacker']])؛
    }

    if (صادر ($ _ COOKIE ['hackers']) && صادر ($ _ COOKIE ['signature'])) {
        $ serialized_hackers = $ _COOKIE ['hackers']؛
        $ sign = $ _COOKIE ['signature']؛
        if (hash_ Equals (امضا ($ serialized_hackers) ، امضای $) === FALSE)
            unset ($ _ COOKIE ['hackers'])؛
        } دیگه
            $ serialized_hackers = منفجر شود (''، $ serialized_hackers)؛
            $ هکرها = array_map ('unserialize_safe'، $ serialized_hackers)؛
        }
    }

    if (! صادر ($ _ COOKIE ['hackers']) ||! صادر ($ _ COOKIE ['signature'])) {
        $ هکرها = [new Hacker]؛
        $ serialized_hackers = implode (''، array_map ('serialize'، $ هکرها))؛
        setcookie ('هکرها' ، $ serialized_hackers)؛
        setcookie ('امضای' ، امضا ($ serialized_hackers))؛
    }
؟>



    
     سایت ایمن 10000 


دیوار مشهور هکر:

  • toString ()؟>>
  • نمایش / پنهان کردن منبع صفحه