Nebula 02 - Walkthrogh

بسم الله الرحمن الرحيم

اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين

اللهم علمنا ماينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم

نبدا في التحدي الثالث من تحديات Nebula لأخذ العلم





اول مانبدا نقرا النبذة عن التحدي وبعدها نبدا باذن الله حلّه

There is a vulnerability in the below program that allows arbitrary programs to be executed, can you find it?
To do this level, log in as the level02 account with the password level02. Files for this level can be found in /home/flag02.

وبعدها يستعرض الكود التالي 

#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdio.h>

int main(int argc, char **argv, char **envp)
{
  char *buffer;

  gid_t gid;
  uid_t uid;

  gid = getegid();
  uid = geteuid();

  setresgid(gid, gid, gid);
  setresuid(uid, uid, uid);

  buffer = NULL;

  asprintf(&buffer, "/bin/echo %s is cool", getenv("USER"));
  printf("about to call system(\"%s\")\n", buffer);
  
  system(buffer);
}
الكود ياخذ المدخل من المتغير USER في env اللي تم شرحها في الدرس السابق

والخطا في الكود بان الدالة system تمرر قيمة USER من غير فلترة

وبالامكان استغلالها بالشكل التالي

ماتم عمله هو تصدير قيمة جديدة للمتغير USER تمكننا من الحصول على شل بصلاحيات flag02 وبعدها تنفيذ البرنامج getflag للحصول على العلم


الى هنا ينتهي الدرس القاكم في التحدي القادم باذن الله

تعليقات

المشاركات الشائعة من هذه المدونة

CRLF injection [\r\n Carriage Return]

Study in Nosql-Injection-Mongodb