Kernel Kudos – Telegram
Kernel Kudos
1.73K subscribers
110 photos
50 videos
112 files
256 links
🪐 This channel talks about: C, Linux, Bash, and so on 🕸️

🌀 Buy Me Coffee
USDT BEP20 : 0xbc8e52af7b46461b8076085Be771F465E26A9Dfd

🐞 YouTube: https://youtube.com/@KernelKudos

Chat: { https://news.1rj.ru/str/+ftxZVA8V_ns5ZmY8 }

🔴 whoami : { @FirstTarokh }
Download Telegram

void
main(int argc, char* argv[]) {
int num;
num = 0x00;
printf("Enter a Number: ");
scanf("%d", num);
exit(0);
}
👍2

void
main(int argc, char* argv[]) {
int a = 0x00;
printf("A is -> [ %d]\n", a );
return EXIT_SUCCESS;
}
👍2
C 

void
getData(char* data) {
char buffer[10] = { 0 };
strcpy(buffer, data);
printf("%s\n", buffer);
}

int
main(void) {
char data[50] = "If you are good at something never do it for free";
getData(&data[0]);
return EXIT_SUCCESS;
}
👍2

int
main(int argc, char* argv[])
{
int *ptr = (int *)malloc(sizeof(int));
*ptr = 42;
free(ptr);
printf("%d\n", *ptr);
return 0;
}
👍2

void
main(void) {
int* ptr = NULL;
*ptr = 10;
return 0;
}

#include <stdlib.h>

int main() {
char command[100];
scanf("%s", command);
system(command);
return 0;
}
دوستان جواب همشون رو میزارم با دلیل
جواب بدید
سوال ها سطح بندی های مختلف دارن
سوال آخر تو سطح بالاتریه و نیاز به فکر بیشتر داره
کوییز های لینوکس هم گذاشته میشه حتما
موفق باشید 🪐
4
Kernel Kudos
What is the result ?
جواب درست اینجا میشه Segmentation Fault
بخاطر اینکه scanf انتظار داره به عنوان پارامتر دوم بهش پوینتر پاس بدید ولی خب اینجا آدرس پاس داده نشده
یعنی اومدیم مستقیم num رو دادیم به scanf

ولی خب باید به این صورت بهش متغیرمون رو میدادیم
&num
👍5
Kernel Kudos
Is this code out of Bugs ?
این کد باگ داره بخاطر اینکه برای فانکشن main اومدم void گذاشتم به عنوان return value ولی بعدش اومدم return کردم که کلا اشتباه و نشدنیه
👍3
Kernel Kudos
Is this code safe ?
اینجا خطر Buffer Overflow تهدیدتون میکنه
بخاطر اینکه هیچ توجهی به این نمیکنید که چه مقدار دارید دیتا کپی میکنید داخل buffer
اگر اون دیتا بیشتر از 10 تا کاراکتر داشته باشه Overflow میکنید.

راه حلش استفاده از strncpy به جای strcpy هست.
درواقع strcpy یک فانکشن deprecated به حساب میاد و دیگه استفاده ازش اشتباه و خطرناک به حساب میاد ( ولی همه استفاده میکنن. کی به کیه ؟! )
Kernel Kudos
Is this code safe ?
این کد امن نیست به دلیل Dangling Pointer
یعنی اومدید مموری ای که Allocate کرده بودید رو آزاد کردید با استفاده از free
بعدش سعی کردید dereferenceش کنید.
که نمیشه
👍3
Kernel Kudos
Is this code safe ?
اینجا هم پوینتر NULL رو اومدیم dereference کردیم که نمیشه و امن نیست
یا کرش میکنید یا اتفاقای بدجور میوفته
👍3
Kernel Kudos
Is this code safe ? :))
و در آخر این

اینجا system میاد دستوری که بهش میدید رو داخل بش اجرا میکنه
حالا اگر کنترلی نکنید که چه دستوری میتونه وارد بشه و چه دستوری نه؛ یوزر میتونه بیاد دستوراتی رو استفاده کنه که نباید میکرده

هرچند این حرکت کلا اشتباهه.
یعنی پیشنهاد میشه که کدی خارج از برنامه خودتون رو اینطوری لود نکنید داخل برنامه
شاید از بیرون یک برنامه رو اینطوری اجرا کنید ولی قبلش یه نفر آدرس اون برنامه و یا فایل اجرایی برنامه رو عوض کرده باشه..
این یکی از حمله ها و سوتی های احمقانه و مرسومه. و جز مقدماتی ترین مساعل در امنیت.

( میدونم مسعله رو اشتباه نوشتم )
👍2
دوستان این سوال ها سطح های مختلفی دارن، چون بعضی از دوستان گفته بودن که سطحشون بالاتر از فیلم ها و کاناله، و میخوان جالش بیشتری داشته باشن - 🍁
👍3