من سوالی دارم که در مورد آسیب پذیری PHP کار می کنم. در زیر قطعه کد آمده است. در اصل ، من باید مطالب get_flag.php
را چاپ کنم.
قطار افکار من این است که موارد زیر می تواند آسیب پذیری های موجود در کد
- باشد [
global $ secret
متغیر - عملکرد
unserialized_safe
- 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
دیوار مشهور هکر:
= $hacker-> toString ()؟>>
نمایش / پنهان کردن منبع صفحه