Gibt es eine Möglichkeit, eine ausführbare Binärdatei unter Linux auszuführen, für die das Ausführungsbit nicht gesetzt ist? chmod +x
ist keine Option.
ZB können es r--r--r--
nur Berechtigungen sein .
Das Ausführen von Skripten ist möglich, ohne das Ausführungsbit zu setzen und einen Shebang einzugeben, indem die Quelle an den Interpreter übergeben wird, z . B. bash script.sh
oder python script.py
.
Gibt es also so etwas, execute abinaryfile
dass der Objektcode in den Speicher geladen und ausgeführt wird?
Antworten:
Sie können /lib/ld*.so wie folgt als ELF-Interpreter verwenden:
Der tatsächliche Name unterscheidet sich von Architektur zu Architektur. Einige Namen sind
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
und/lib/ld-2.7.so
. Sie können es wahrscheinlich als einzigartig finden/lib/ld*
.quelle
ld
ist der Programm-Linker / Loader. Es findet und lädt die gemeinsam genutzten Bibliotheken, die vom Programm verwendet werden, und führt sie dann aus.ld-linux
behandelt ELF-Binärdateien./lib/ld-linux.so.2
ist , wenn es nicht ausführbar ist (ist das überhaupt möglich?).so
s können geladen werden, undld-linux
ist irgendwie wichtig./lib64/ld-linux-x86-64.so.2
Zumindest nicht auf die gleiche Weise. Sie führen immer noch eine Binärdatei aus, wenn Sie die Python-Sache machen. Python ist + x. Sie müssten etwas kompilieren, das eine Datei laden und ausführen kann.
TiCL sollte seine / ihre Antwort als Antwort geben, da dies der beste Weg ist.
quelle
Der
exec
Systemaufruf des Linux-Kernels schlägt fehl,EACCES
wenn die Datei nicht ausführbar istWährend Sie dies tun können
sh myprog.sh
, kann der Versuch, das Programm auszuführen,./myprog.sh
nicht funktionieren../myprog.sh
exec
Systemaufruf des Linux-Kernels wie folgt interpretiert : /programming/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -die-erste-zeile-eines-pyt / 40938801 # 40938801Dies kann überprüft werden mit
main.c
:und
myprog.sh
:Wenn
myprog.sh
nicht ausführbar,main
schlägt fehl mit:Getestet in Ubuntu 17.10
gcc -std=c99
.POSIX 7 erwähnt, dass bei:
Weitere Gründe finden Sie unter: /security/66550/unix-execute-permission-can-easly-bypassed-is-it-superfluous-or-whats-the
quelle