Простая setuid бинарная эксплуатация

У меня есть программа setuid, которая выводит файл таким образом:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
        system("ls /challenge/binary/binary1/.passwd");
        return 0;
}

Что мне нужно, это заставить программу раскрывать содержимое файла, а не просто указывать его имя. Поэтому я попытался создать псевдоним, чтобы изменить поведение ls следующим образом:

alias ls='cat'

но все же, это не работает. Не могли бы вы указать мне правильное направление!

2 ответа

Решение

Алиасы живут только на оболочке, которая их определила, и system запускает новую оболочку. Эта оболочка не будет читать ~/.bashrc или другие файлы, в которых псевдонимы обычно определяются: либо только интерактивные оболочки. Некоторые оболочки, но не все, читают другой файл, но существует независимый от оболочки способ использования этого.

Команда поиска команд Shell пытается следующие элементы в следующем порядке:

  • Псевдонимы - нет.
  • Функции - нет, по той же причине.
  • Встроенных - нет.
  • Команды в PATH - это должно быть по умолчанию.

Так что работайте над тем, чтобы поиск ls в $PATH повернет cat программа.

+ Изменить ls в cat,

ls список каталогов, он не отображает файлы. cat делает это

Другие вопросы по тегам