AOK qilingan kod zaiflikka qarab, ma'lum ko'rsatmalarga
rioya qilishi
kerak bo'lgan qobiq kodiga mos keladi. Shellcode va uning tuzilishini
muhokama qilish uchun 8.1 -bo'limga qarang .
Kodni kiritish yoziladigan va bajariladigan kesiluvchi xotira maydoni
mavjudligini, ushbu xotira maydonining joylashuvini bilishni va agar
manzilga yaxshi boshqaruv oqimini uzatish orqali erishilmasa,
boshqaruv oqimini o'g'irlash primitivini talab qiladi.
Kodni kiritish tajovuzkor jarayonning
bajariladigan joyga yozishi
mumkinligini nazarda tutadi . Buzg'unchi jarayonda mavjud kodni
qayta yozishi yoki o'zgartirishi, ko'rsatmalarni qisman yoki to'liq qayta
yozishi mumkin. Mavjud kodning buzilishi tajovuzkorga boshqaruv
oqimini o'g'irlamasdan kod bajarilishini ta'minlashi mumkin, chunki
yaxshi boshqaruv oqimini uzatish
ijroni tajovuzkor tomonidan
boshqariladigan kodga yo'naltirishi mumkin. Shu bilan bir qatorda,
tajovuzkor kiritilgan kodga boshqaruv oqimini o'g'irlashi mumkin.
uchun oqimni nazorat qilish. Bunga qo'shimcha ravishda, zaiflikdan
tajovuzkor tomonidan boshqariladigan kod ko'rsatgichiga havola
qilingan joyga yo'l bo'lishi kerak .
5.4.2 Kod kiritish
Zamonaviy arxitekturalar kod va ma'lumotlarni ajratishni qo'llab-
quvvatlaydi, shuning uchun bu hujum vektori endi avvalgidek keng
tarqalgan emas. Ushbu hujum vektorining zamonaviy varianti dinamik
ravishda yangi kod yaratadigan Just-In Time kompilyatorlariga
mo'ljallangan. Bunday muhitda ba'zi sahifalar bir vaqtning o'zida yozilishi
va bajarilishi mumkin bo'lishi mumkin .
5
ta hujum vektori
54
Machine Translated by Google
Quyidagi misoldagi zaif kodni hisobga olsak, tajovuzkor
stekda yuqoriroqda joylashgan ma'lumotlarni qayta yozish
Ushbu zaiflikdan foydalanishning bir necha usullari mavjud.
Boshqaruv
oqimini o'g'irlash qaytish yo'riqnomasini qayta yozish orqali erishiladi
Qaytgandan so'ng, boshqaruv oqimini chaqiruv funksiyasiga
qaytarish o'rniga, EGG -dagi qobiq kodi bajariladi va
stekdagi ko'rsatgich. Kod uchta joyga kiritilishi mumkin: (i) buferning
o'zi, (ii) stek ramkasida yuqoriroq.
EGG boshiga ishora qilish uchun ko'rsatma ko'rsatgichini qaytaring .
EGG muhit o'zgaruvchisiga qobiq kodini
kiriting va ustiga yozing
[ EGG muhit oÿzgaruvchisining manzili ] va [0x0]
EGG muhit o'zgaruvchisi . Shuning uchun biz tayyorlaymiz
hujumchi nazorati. Zaif qobiliyatdan foydalanish uchun toÿliq
maÿlumot: [AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA],
strcpy funksiyasi cookie chegaralarini tekshirmaydi . Aytaylik,
ushbu dastur kod bajarilmasdan tuzilgan
cookie buferini doimiy ravishda to'ldirish uchun kiritishni ta'minlashi mumkin
5 ta hujum vektori
oldini olish va dastur ASLRsiz ishlaydi.
55
bayt.
Qaytish yo'riqnomasi ko'rsatkichining "yuqorida" yoki (iii)
muhit o'zgaruvchisida (misol joylashuvni qulay tarzda xabar qiladi)
Machine Translated by Google
4
8
Kodni kiritish o'rniga , dasturning mavjud kodini
qayta ishlating .
Asosiy g'oya - yangi ixtiyoriy xatti-harakatlarni amalga oshirish
uchun mavjud kod parchalarini birlashtirish. Bu kodning turli jihatlari
uchun Qaytishga yo'naltirilgan dasturlash (ROP), o'tishga
yo'naltirilgan dasturlash (JOP), qo'ng'iroqlarga yo'naltirilgan
dasturlash (COP), kontrafakt ob'ektga yo'naltirilgan dasturlash (COOP) deb ham ataladi.
Ilovaning har qanday bajariladigan kodi tajovuzkor tomonidan har
qanday faol yumshatish mexanizmining
cheklovlari ostida muqobil
tarzda ishlatilishi mumkin. Bilvosita boshqaruv oqimi o'tkazmalari
orqali raqiblar boshqa bilvosita boshqaruv oqimi uzatish bilan
tugaydigan kichik kod ketma-ketligini (gadjetlar deb ataladi) birlashtirishi mumkin .
Do'stlaringiz bilan baham: