Ich habe ein Setuid-Programm, das eine Datei folgendermaßen auflistet:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
system("ls /challenge/binary/binary1/.passwd");
return 0;
}
Was ich brauche, ist, das Programm zu veranlassen, den Inhalt der Datei offenzulegen, anstatt nur ihren Namen aufzulisten. Also habe ich versucht, einen Alias zu erstellen, um das Verhalten von zu ändern ls diesen Weg:
alias ls='cat'
aber es funktioniert immer noch nicht. Könnten Sie mir bitte die richtige Richtung zeigen!
system("ls
durchsystem("cat
? Versuchen Sie, ein Programm zu missbrauchen, indem Sie den Systembefehl verwenden, um etwas zu tun, das es nicht tun soll?Antworten:
Aliase leben nur auf der Shell, die sie definiert hat, und
system
startet eine neue Shell. Diese Shell liest nicht~/.bashrc
oder andere Dateien, in denen in der Regel Aliase definiert sind, entweder nur interaktive Shells. Einige Shells, aber nicht alle, lesen eine andere Datei, aber es gibt eine Shell-unabhängige Möglichkeit, dies zu nutzen.Die Shell-Befehlssuche versucht die folgenden Elemente in dieser Reihenfolge:
PATH
- Das muss standardmäßig so sein.So arbeiten Sie daran, dass die Suche nach
ls
im$PATH
wird das aufdrehencat
Programm.quelle
Veränderung
ls
zucat
.ls
listet Verzeichnisse auf, es werden keine Dateien angezeigt.cat
macht das.quelle