Stack xotirasi tushunchasi: PWN va Binary Exploitation asoslari

Stack xotirasi tushunchasi: PWN va Binary Exploitation asoslari - ProblemStack.uz Blog Article
IbragimovQuvonchbek - ProblemStack.uz Profile
IbragimovQuvonchbek

December 19, 2025

3 min read 36 views

🧠 Stack xotirasi tushunchasi: Dasturchilar va CTF ishtirokchilari uchun qo‘llanma

Kirish

Dasturlash va ayniqsa xavfsizlik (PWN, binary exploitation) sohasida ishlayotgan har bir mutaxassis uchun stack xotirasi (stack memory) tushunchasini chuqur tushunish juda muhim.

Ko‘plab real zaifliklar va CTF muammolari aynan stack bilan bog‘liq xatolar sababli yuzaga keladi. Ushbu maqolada biz stack nima ekanini, u qanday ishlashini va nima sababdan u xavfli bo‘lishi mumkinligini professional darajada tushuntirib beramiz.


📌 Stack xotirasi nima?

Stack — bu dastur ishlashi davomida vaqtinchalik ma’lumotlar saqlanadigan xotira sohasi.

Stack odatda quyidagi ma’lumotlarni saqlaydi:

  • Funksiya ichidagi lokal o‘zgaruvchilar

  • Funksiyaga uzatilgan argumentlar

  • Funksiya tugagach qayerga qaytish kerakligini bildiruvchi return address

  • Oldingi stack holatini saqlovchi saved base pointer (RBP)

Stack LIFO (Last In, First Out) tamoyili asosida ishlaydi:

Oxirgi qo‘shilgan element birinchi bo‘lib olib tashlanadi.


🔄 Stack qanday ishlaydi?

Har safar funksiya chaqirilganda:

  1. Yangi stack frame yaratiladi

  2. Lokal o‘zgaruvchilar stackga joylashtiriladi

  3. Funksiya tugagach:

    • Stack frame o‘chiriladi

    • Dastur return address orqali oldingi joyiga qaytadi

Bu jarayon juda tez va avtomatik bo‘ladi.


🧩 Stack Frame tuzilishi (x86_64 misolida)

Quyidagi tartib eng ko‘p uchraydi:

| Return Address |
| Saved RBP      |
| Local buffer   |  ← masalan char buffer[64]

Agar dasturchi ehtiyot bo‘lmasa, lokal buffer chegarasidan chiqib yozish mumkin bo‘ladi.


⚠️ Stack Overflow nima?

Stack overflow — bu stackdagi ajratilgan xotiradan ko‘proq ma’lumot yozilishi holati.

Masalan:

char buffer[64];
gets(buffer);

Bu yerda:

  • buffer 64 bayt

  • gets() esa kiritilgan ma’lumot uzunligini tekshirmaydi

Natijada:

  • buffer to‘lib ketadi

  • Keyingi xotira joylari (saved RBP, return address) o‘zgartirilishi mumkin


💥 Nega bu xavfli?

Agar hujumchi:

  • Return address’ni o‘zgartira olsa

  • Dastur oqimini boshqa funksiyaga yo‘naltira olsa

👉 u holda:

  • Maxfiy funksiyalar chaqiriladi

  • Flag olinadi

  • Hatto tizim buyruqlari bajarilishi mumkin

Shu sababli stack overflow eng klassik va xavfli zaifliklardan biri hisoblanadi.


🛡 Stack himoya mexanizmlari

Zamonaviy tizimlarda quyidagi himoyalar mavjud:

Himoya Tavsif
Stack Canary Overflow aniqlansa, dastur to‘xtaydi
NX (DEP) Stack’da kod bajarishni taqiqlaydi
PIE Funksiya manzillari har ishga tushishda o‘zgaradi
ASLR Xotira manzillarini tasodifiylashtiradi

CTF muammolarida bu himoyalar ko‘pincha o‘chirilgan bo‘ladi.


🧠 CTF va PWN’da stack ahamiyati

Stack tushunchasini bilmasdan:

  • ret2win

  • ret2libc

  • ROP (Return Oriented Programming)

kabi exploitlarni tushunish imkonsiz.

Shu sababli stack — PWN yo‘nalishining asosi hisoblanadi.


🧪 Oddiy misol (tahlil uchun)

void vuln() {
    char buf[32];
    gets(buf);
}

Agar 32 baytdan ko‘p ma’lumot yuborilsa:

  • Stack buziladi

  • Dastur nazoratdan chiqadi

Bu esa exploit uchun imkoniyat yaratadi.


🏁 Xulosa

Stack xotirasi:

  • Juda tez

  • Juda qulay

  • Ammo noto‘g‘ri ishlatilsa — juda xavfli

Professional dasturchi:

  • Har doim xavfsiz funksiyalardan foydalanadi

  • Stack overflow’ga yo‘l qo‘ymaydi

Professional CTF ishtirokchisi esa:

  • Aynan shu xatolarni izlaydi 😄


📚 Tavsiya

Agar siz PWN / binary exploitation yo‘nalishida rivojlanmoqchi bo‘lsangiz:

  • Stack’ni mukammal o‘rganing

  • Assembly asoslarini tushuning

  • Real exploitlar yozib ko‘ring

ProblemStack.uz — aynan shu yo‘lda sizga yordam beradi 🚩

Share this article

Related Problems

Related Posts

Steganografiya CTF Masalalarini Yechish Bo‘yicha To‘liq Professional Qo‘llanma

Steganografiya — oddiy ko‘ringan rasm, audio yoki fayl ichiga yashirilgan maxfiy ma’lumotlarni aniqlash san’atidir. Ushbu qo‘llanmada siz CTF musobaqalarida uchraydigan stego masalalarini tizimli ravishda qanday tekshirish, qaysi vositalarni qo‘llash va yashirin flagnni topishning eng samarali usullarini o‘rganasiz.

Dec 03, 2025

SQL Injection nima va undan qanday himoyalanish mumkin? To‘liq tushuncha va real kod misollari

SQL Injection (SQLi) — bu hujumchi foydalanuvchi kiritadigan ma’lumotlar orqali SQL so‘roviga zararli kod qo‘shishi va natijada ma’lumotlar bazasiga ruxsatsiz kirishi mumkin bo‘lgan xavfsizlik zaifligidir. Bu zaiflik OWASP Top 10’da uzoq yillardan beri yetakchi o‘rinlarda turadi. U noto‘g‘ri yozilgan backend kod, filtrlanmagan input va sanitizatsiyasiz SQL so‘rovlari natijasida yuzaga keladi.

Dec 01, 2025

🎣 Phishing hujumlari qanday ishlaydi? To‘liq professional tahlil

Kiberjinoyatchilar tomonidan eng ko‘p qo‘llaniladigan hujum usullaridan biri — phishing (“fishing” — ma’nosi: "qarmoqqa ilish"). Bu usulda hujumchi texnik ekspluatatsiya emas, balki inson psixologiyasidan foydalanadi. Shu sababli phishingga qarshi eng yaxshi himoya — xabardorlik. Ushbu maqolada phishingning ishlash mexanizmi, turli shakllari, real ssenariylar va unga qarshi samarali himoya choralarini tahlil qilamiz.

Nov 30, 2025

🌐 Tarmoq (Network) qanday ishlaydi: to‘liq qo‘llanma

Internet va ichki tarmoqlar hayotimizning ajralmas qismiga aylangan. Har bir qurilma, server yoki smartfon tarmoq orqali ma’lumot almashadi. Ushbu maqolada sizga tarmoqning asosiy tushunchalari, ishlash prinsiplari, protokollar, IP va MAC manzillari, routing, NAT, firewall va xavfsizlik jihatlari batafsil tushuntiriladi.

Nov 12, 2025