Site som kör programmet wtf

Här diskuteras programmering och utveckling
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Site som kör programmet wtf

Inlägg av micke_nordin »

Idag har jag roat mig med att lära mig hur man kör ett program på servern och skickar outputen för utskrift på en hemsida med php. Det var löjligt enkelt och resultatet blev ett skript som kör det finurliga programmet "wtf" online. ;D

Så gå till http://wikifind.st/wtf/ och kolla upp vad en chatförkortning eller ett unixkommando betyder.

Källkoden (GPL of course ;) ) finns här: http://wikifind.st/wtf/index.php.tar.gz för den som tycker sånt är kul.

/Micke

ps. skyll inte på mig om programmet inte fattar era obskyra förkortningar, wtf kan inte göra mer än vad det kan i er egen terminal d.s ::)
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

Re: Site som kör programmet wtf

Inlägg av gasol »

edit: im stoopid!
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

Re: Site som kör programmet wtf

Inlägg av gasol »

Tjenare, tumregeln är att så länge du läser in kommandon från en användare så måste du kolla så att det inte är något kommando som kan skada din dator. När angriparen försöka köra kommandon som inte är tänkta så brukar det kallas för injections.

Jag kodar inte i PHP men det borde finnas färdig kod som tar en input sträng och kollar så det kan ske några injections. Om det är just XML filer som ska kollas så kan du ju alltid låta användaren ladda upp XML-filen och sedan köra ditt C++ program mot den filen lokalt.

Som sagt jag är ingen webguru så jag kan inte hjälpa dig så mycket, det kanske finns folk som är bättre på sånt i webdesign delen?
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

gasol skrev:edit: im stoopid!
Jag vet inte det, nu måste jag kolla lite på hur jag gör för att klippa söksträngen om && ingår... Tills dess är sidan nere ;)

/Micke
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

Re: Site som kör programmet wtf

Inlägg av gasol »

inte bara && utan även || och ; ger liknande resultat... tänk på att > och >> kommandon kan låta användaren skriva in saker i filer...

yadda >> index.php
eller
yadda || echo "elak php-kod" >> index.php
eller
yadda ; echo "spam och skit" >> spam.html
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Site som kör programmet wtf

Inlägg av Konservburk »

Det hjälper inte att bara klippa bort && eftersom det finns andra finnurligheter att använda sig av. Nu är jag inte helt hemma på detta, men det borde gå att enkelfnutta $akro så här:

Kod: Markera allt

$answ = `/usr/games/wtf is '$akro'`;
Om du dessutom plockar bort alla eventulla enkelfnuttar från själva $akro så tycker åtminstone jag att det borde vara säkert. Eller finns det fortfarande någon säkerhetsbrist som jag missar?
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Vad blir skillnaden om jag enkelfnuttar $akro?

Jag har gjort en ny variant där jag kapslar in kommandot så här:

Kod: Markera allt

if (strpos($akro, $danger) !== false) 
		{
			echo "Aja baja!";
			
		} 
		
		else 
		{
   			$answ = `/usr/games/wtf is $akro`;

		}
Det kollar om sökordet innehåller && (och jag kan naturligtvis lägga till flera no no's där) och skriver i så fall ut "Aja baja" i stället för att köra kommandot.

/Micke
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Site som kör programmet wtf

Inlägg av Konservburk »

micke_nordin skrev:Vad blir skillnaden om jag enkelfnuttar $akro?
Skalet gör helt enkelt inga lustigheter med enkelfnuttade strängar. Om du ser till att det inte finns några enkelfnuttar i själva $akro så borde det inte heller gå att på något sätt bryta sig ut ur enkelfnuttarna.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Konservburk skrev:
micke_nordin skrev:Vad blir skillnaden om jag enkelfnuttar $akro?
Skalet gör helt enkelt inga lustigheter med enkelfnuttade strängar. Om du ser till att det inte finns några enkelfnuttar i själva $akro så borde det inte heller gå att på något sätt bryta sig ut ur enkelfnuttarna.
Smart, så om jag enkelfnuttar variabeln $akro innan den går till terminalen och stoppar alla strängar som innehåller enkelfnuttar så är jag hemma? Jag kan helt enkelt kolla om sökordet innehåller en enkelfnutt och sedan skicka den till "aja baja -satsen?

/Micke
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Site som kör programmet wtf

Inlägg av Konservburk »

micke_nordin skrev:Smart, så om jag enkelfnuttar variabeln $akro innan den går till terminalen och stoppar alla strängar som innehåller enkelfnuttar så är jag hemma? Jag kan helt enkelt kolla om sökordet innehåller en enkelfnutt och sedan skicka den till "aja baja -satsen?
Jag tycker att det ska räcka. Men någon annan får gärna rätta mig om jag nu skulle ha fel.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Det verkar funka skitbra! Det har fått den roliga sidoeffekten att man kan stoppa i flera giltiga wtf-sökord samtidigt med hjälp av && och få svar på alla, exempelvis:

wtf && id som ger svaret:

WTF: {what,where,who,why} the fuck id: id (1) - print user identity

Dock har jag ju begränsat webforumläret till 12 tecken så man får ju inte plats med hur mycket som helst. Den nya koden kommer man förövrigt åt via den gamla länken, för den som är intresserad.

Så här ser förändringen ut i korthet:

Kod: Markera allt

		if (strpos($akro, $danger) !== false) 
		{
			echo "Aja baja!";
			
		} 
		
		else 
		{
			$akro = "'" . $akro . "'";
   			$answ = `/usr/games/wtf is $akro`;
			echo $answ;
		}
Variabeln $danger innehåller en enda enkelfnutt

Jag lugnar mig lite med att lägga upp skriptet igen om det kanske är någon annan som kommer på nått mer problem...
/Micke
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Site som kör programmet wtf

Inlägg av andol »

Likt tidigare nämnts så gäller det att hålla tungan rätt i mun då man skickar argument tillhandahållna utav besökare rakt in i en ekekverande strängt. Annars kan det gör Ont, Riktigt Ont.

Om möjligt, försök vitlista vilka argument du acceptera. Detta kan till exempel göras mot en faktisk lista eller mot ett reguljärt uttryck.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

andol skrev: Om möjligt, försök vitlista vilka argument du acceptera. Detta kan till exempel göras mot en faktisk lista eller mot ett reguljärt uttryck.
Det tror jag inte riktigt blir görligt eftersom mitt riktiga program (det här är bara en test för skojsskull) letar efter nyckelord (reguljära uttryck) i wikipediadumpar och sedan listar alla sidor som innehåller sökordet . Jag vill att man skall kunna söka på vad som helst, det jag inte vill är att man skall kunna bryta sig ur söksträngen och skicka kommandon till terminalen. Därför är jag glad om någon kan komma på någon brist i den nuvarande lösningen.

Mitt enda behov är alltså att kunna skicka en användardefinierad strängkonstant till ett program, den strängkonstanten bör dock kunna se ut lite hur som helst.

/Micke
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Site som kör programmet wtf

Inlägg av Konservburk »

micke_nordin skrev:Det verkar funka skitbra! Det har fått den roliga sidoeffekten att man kan stoppa i flera giltiga wtf-sökord samtidigt med hjälp av && och få svar på alla, exempelvis:

wtf && id som ger svaret:

WTF: {what,where,who,why} the fuck id: id (1) - print user identity
Borde det inte går lika bra utan && mellan de olika sökorden?
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Konservburk skrev: Borde det inte går lika bra utan && mellan de olika sökorden?
Yupp, det funkar också.

/Micke
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

En annan relaterad fråga: vad blir skillnaden om jag byter enkelfnuttarna mot dubbelfnuttar (vanliga citationstecken)? Funkar det också?

/Micke
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Site som kör programmet wtf

Inlägg av Konservburk »

micke_nordin skrev:En annan relaterad fråga: vad blir skillnaden om jag byter enkelfnuttarna mot dubbelfnuttar (vanliga citationstecken)? Funkar det också?
Det är ingen bra idé. Då kan man göra elaka saker med $(elakt kommando) och liknande.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Konservburk skrev: Det är ingen bra idé. Då kan man göra elaka saker med $(elakt kommando) och liknande.
Ok, då gör jag inte så.

Tack så mycket för hjälpen alla, för övrigt!

Hör gärna av er om ni kommer på nått mer som jag borde tänka på.

/Micke
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Site som kör programmet wtf

Inlägg av micke_nordin »

Det verkar som om det nog inte blir den här lösningen ändå, eftersom jag nog kommer få problem med timeout från servern då min sökning nog tar för lång tid att utföra...

/Micke
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Site som kör programmet wtf

Inlägg av David Andersson »

micke_nordin skrev:Hör gärna av er om ni kommer på nått mer som jag borde tänka på.
I stället för "Aja baja" kan man göra om input så att den blir ofarlig. Då blir det dels färre tillfällen för förövare att få tips om vilket språk en injection ska göras för, dels ökar sannolikheten att oskyldiga som söker på "rythm'n'blues" får rimliga svar.

Att göra en farlig input ofarlig är naturligtvis en minst lika delikat uppgift som att upptäcka om den är farlig.

En simpel strategi kan vara att ersätta enkelfnutt med mellanslag eller bindestreck. ('rythm-n-blues')

En mer proffsig ansats är att escapa eller quota strängen så att alla tecken i input kommer till programmet wtf oförändrade. För shell kan man, om strängen omges av enkelfnutt, i strängen ersätta alla ' med '"'"' (*). Eller omge strängen med " och escapa ALLA icke-alfanumeriska tecken med \. ('rythm'"'"'n'"'"'blues', "rythm\'n\'blues")

Det är viktigt att förvissa sig om att man inte missat nåt. Man kan inte bara testa sig fram. Man måste lusläsa man-sidor och kolla vad säkerhets-experter säger.

(*) Obs. Använd på egen risk. Jag kan ha missat nåt.
Skriv svar

Återgå till "Programmering och webbdesign"