Saya memiliki program setuid yang mendaftarkan file dengan cara ini:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
system("ls /challenge/binary/binary1/.passwd");
return 0;
}
Yang saya butuhkan adalah mendapatkan program untuk mengungkapkan konten file daripada hanya daftar namanya. Jadi saya mencoba membuat alias untuk mengubah perilaku ls dengan cara ini:
alias ls='cat'
tapi tetap saja, itu tidak berhasil. Bisakah Anda mengarahkan saya ke arah yang benar!
system("ls
olehsystem("cat
? Apakah Anda mencoba mencari cara untuk menyalahgunakan program menggunakan perintah sistem untuk melakukan sesuatu yang seharusnya tidak dilakukan?Jawaban:
Alias hanya tinggal di shell yang mendefinisikannya, dan
system
memulai shell baru. Shell itu tidak akan membaca~/.bashrc
atau file lain di mana alias biasanya didefinisikan, baik: hanya shell interaktif yang melakukannya. Beberapa shell, tetapi tidak semua, membaca file lain, tetapi ada cara shell-independen untuk mengeksploitasi ini.Pencarian perintah Shell mencoba elemen-elemen berikut dalam urutan ini:
PATH
- harus default ini.Jadi bekerja untuk memastikan bahwa pencarian dari
ls
dalam$PATH
akan muncul dalamcat
Program.sumber
Ubah
ls
kecat
.ls
daftar direktori, itu tidak menampilkan file.cat
apakah itu.sumber