Apakah ada cara untuk menjalankan file biner yang dapat dieksekusi di Linux yang tidak memiliki bit eksekusi? chmod +x
bukan pilihan.
Misal izinnya mungkin r--r--r--
saja.
Eksekusi skrip dimungkinkan tanpa menetapkan bit eksekusi dan meletakkan shebang dengan mengirimkan sumber ke penerjemah, misalnya bash script.sh
atau python script.py
.
Jadi apakah ada sesuatu seperti execute abinaryfile
itu yang akan memuat kode objek ke dalam memori dan menjalankannya?
Jawaban:
Anda dapat menggunakan /lib/ld*.so sebagai juru bahasa ELF, seperti:
Nama sebenarnya berbeda dari arsitektur ke arsitektur. Beberapa nama termasuk
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
dan/lib/ld-2.7.so
. Anda mungkin dapat menemukannya secara tunggal/lib/ld*
.sumber
ld
adalah penghubung / pemuat program. Itu menemukan dan memuat pustaka bersama yang digunakan oleh program, dan kemudian menjalankannya.ld-linux
menangani binari ELF./lib/ld-linux.so.2
tidak dapat dieksekusi (apakah itu mungkin?).so
s yang dapat dieksekusi yang dapat dimuat, danld-linux
agak penting./lib64/ld-linux-x86-64.so.2
Setidaknya, tidak dengan cara yang sama. Anda masih menjalankan biner ketika Anda melakukan hal python. Python adalah + x. Anda perlu mengkompilasi sesuatu yang dapat memuat file dan menjalankannya.
TiCL harus menjawabnya karena itu adalah cara terbaik untuk melakukannya.
sumber
The
exec
syscall dari kernel Linux gagal denganEACCES
jika file tersebut tidak executableMeskipun Anda dapat melakukannya
sh myprog.sh
, mencoba menjalankan program karena./myprog.sh
tidak dapat bekerja, karena ketika Anda melakukannya:./myprog.sh
exec
system call dari kernel Linux seperti yang dijelaskan di: /programming/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -the-first-of-a-pyt / 40938801 # 40938801Ini dapat diverifikasi dengan
main.c
:dan
myprog.sh
:Jika
myprog.sh
tidak dapat dieksekusi,main
gagal dengan:Diuji di Ubuntu 17.10
gcc -std=c99
,.POSIX 7 menyebutkan bahwa pada:
Dasar pemikiran lebih lanjut dapat ditemukan di: /security/66550/unix-execute-permission-can-be-easy-bypassed-is-it-superfluous-atau-whats-the
sumber