شما هم متوجه شدید که بیشتر سایتها الان sanitization ورودی رو با بلاک کردن تگها و ایونتهای خاص انجام میدن، درسته!? نه واقعاً 😅
خب، اول یه نگاهی به چند تگ نمونه که میتونن XSS رو فعال کنن بنداز:
script, img, a, iframe, object, video, audio, form, meta
سایت این کلمات کلیدی رو اگر داخل تگهایی مثل < > یا </ > باشن بلاک میکنه و با هیچی (null یا رشته خالی "") جایگزین میکنه.
پس اگر پیلود زیر رو امتحان کنی:
<script>alert(1)</script>
تبدیل میشه به:
alert(1)
حالا یه کم عمیقتر فکر کن چی میشه اگر پیلود رو اینجوری بنویسی:
<script <img>> alert(1) </script </img>>
در این پیلود، به بخش اول دقت کن:
<script <img>>
اینجا <img> یه تگ کامل ایمِیجه و قطعاً توسط فیلتر sanitization حذف میشه. اما <script< چی؟
میبینی که تگ <script> هنوز درست نوشته نشده یعنی <script دنبال شده با <، پس دقیقاً با منطق sanitization مچ نمیشه.
حالا بخش جالب: وقتی <img> از <script <img>> حذف بشه، چی میمونه؟ <script>!
یعنی تبدیل به این صورت میشه:
<script <img>> → remove <img> → <script>
</script </img>> → remove </img> → </script>
و در نهایت پیلود معتبر میشه:
<script>alert(1)</script>
@TryHackBox
#xss