Ushbu bo‘limda biz mutlaq (absolute) va nisbiy (relative) yo‘llar o‘rtasidagi farqni o‘rganamiz.

Ushbu modulning keyingi qismlarida duch keladigan zaifliklardan muvaffaqiyatli foydalanishimiz uchun biz ko‘rsatmoqchi bo‘lgan, yuklamoqchi bo‘lgan, kiritmoqchi bo‘lgan yoki ishga tushirmoqchi bo‘lgan fayllarning yo‘lini aniq ko‘rsatishimiz kerak bo‘ladi. Veb-ilovaning turiga va zaiflikka qarab, biz mutlaq yoki nisbiy yo‘llardan foydalanamiz. Shu sababli, ularning orasidagi farqni tushunish va fayl yo‘llarini ko‘rsatishda ularni qanday ishlatish mumkinligini bilish muhimdir.

Mutlaq yo‘lga murojaat qilish uchun biz fayl tizimidagi to‘liq yo‘lni, barcha ichki kataloglar bilan birga ko‘rsatamiz. Mutlaq yo‘lni fayl tizimidagi istalgan joydan ko‘rsatishimiz mumkin. Linux tizimida mutlaq yo‘llar oldida / belgisi bilan boshlanadi va bu belgi ildiz (root) fayl tizimini bildiradi.1 Shundan boshlab, biz fayl tizimi bo‘ylab harakatlana olamiz.

Keling, bir fayl mazmunini ko‘rsatishda mutlaq yo‘ldan foydalanamiz. /home/kali/ yo‘li bilan boshlab, /etc/passwd faylining tarkibini ko‘rsatamiz.

Biz kali foydalanuvchisining bosh katalogidan boshlaymiz va pwd buyrug‘i bilan hozirgi yo‘limizni tekshiramiz. Ikkinchi buyruq ls / esa ildiz fayl tizimidagi barcha fayl va kataloglarni ko‘rsatadi. Natijada ko‘rinib turibdi: etc katalogi shu yerda joylashgan. Uchinchi buyruqda etc dan oldin / belgisi ishlatilgani sababli biz mutlaq yo‘ldan foydalanayapmiz. Bu shuni anglatadiki, biz fayl tizimidagi istalgan joydan /etc/passwd yo‘li orqali ushbu faylga murojaat qila olamiz. Agar boshlanishidagi / belgisi bo‘lmaganida, terminal ushbu etc katalogini kali foydalanuvchisining bosh katalogida qidirgan bo‘lardi, chunki biz terminalda aynan shu katalogdamiz.

kali@kali:~$ **pwd**
**/home/kali**

kali@kali:~$ **ls /**
bin   home            lib32       media  root  sys  vmlinuz
boot  initrd.img      lib64       mnt    run   tmp  vmlinuz.old
dev   initrd.img.old  libx32      opt    sbin  usr
**etc**   lib             lost+found  proc   srv   var

kali@kali:~$ **cat /etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh

Ro‘yxat 1 – /etc/passwd faylining mazmunini mutlaq yo‘l orqali ko‘rsatish


Endi esa shu natijaga nisbiy yo‘l orqali erishamiz. Ya’ni, kali foydalanuvchisining bosh katalogidan turib, /etc/passwd faylining mazmunini ko‘rsatamiz. Bir katalog orqaga qaytish uchun ../ dan foydalanamiz. Bir necha katalog orqaga harakatlanish uchun esa bir nechta ../ ketma-ketligini birlashtiramiz.

Masalan, ls buyrug‘ini bitta ../ bilan birga ishlatib, /home katalogini ko‘rishimiz mumkin. Chunki ../ – bu bir daraja yuqoriga chiqish demak. Keyin esa ikki marta ../ yozib ildiz fayl tizimiga chiqamiz, u yerda etc katalogi mavjud.

kali@kali:~$ **pwd**
**/home/kali**

kali@kali:~$ **ls ../**
kali

kali@kali:~$ **ls ../../**
bin   home            lib32       media  root  sys  vmlinuz
boot  initrd.img      lib64       mnt    run   tmp  vmlinuz.old
dev   initrd.img.old  libx32      opt    sbin  usr
**etc**   lib             lost+found  proc   srv   var

Ro‘yxat 2 – "../" orqali ildiz fayl tizimiga chiqish


Bu nuqtadan boshlab fayl tizimi bo‘ylab odatdagidek harakatlana olamiz. Masalan, ikki marta ../ va etc ni qo‘shib, /etc katalogidagi fayl va kataloglarni ko‘rsatamiz. Oxirgi buyruqda esa biz cat buyrug‘i orqali passwd faylining mazmunini ko‘rsatamiz. Bu safar nisbiy yo‘l orqali: ../../etc/passwd

kali@kali:~$ **ls ../../etc**
adduser.conf            debian_version  hostname        logrotate.d **passwd**
...
logrotate.conf  pam.d           rmt          sudoers       zsh

kali@kali:~$ **cat ../../etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh

Ro‘yxat 3 – /etc/passwd faylini nisbiy yo‘l orqali ko‘rsatish


Keling, yana bir misolni tahlil qilaylik. Garchi biz yuqorida ko‘rgan cat ../../etc/passwd buyrug‘i bilan /etc/passwd faylini ko‘rishimiz mumkin bo‘lsa ham, bu natijaga ortiqcha ../ ketma-ketliklari orqali ham erishishimiz mumkin.

kali@kali:~$ **cat ../../../../../../../../../../../etc/passwd**
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
king-phisher:x:133:141::/var/lib/king-phisher:/usr/sbin/nologin
kali:x:1000:1000:Kali,,,:/home/kali:/usr/bin/zsh

Ro‘yxat 4 – Nisbiy yo‘lga ko‘proq "../" qo‘shish orqali faylga murojaat qilish