Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][INNE] skrypt php w .jpg
botnaizi
post 12.12.2009, 22:26:29
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


Witam.

Trafiłem dziś na artykuł, że można zagnieździć kod php w obrazku poprzez zdefiniowanie nagłowków. Ale próbując zrobić to u siebie nie udaje mi się. Mógłby ktoś poprawić kod jeśli jest źle

Źródło 1:
plik .htaccess
<Files hackme.jpg>
ForceType application/x-httpd-php
</Files>

Plik hackme.jpg
  1. <?php
  2. //przesyłamy nagłówek przeglądarce co informuje ją o tym, że jesteśmy obrazkiem
  3. header("Content-type: image/jpg") ;
  4.  
  5. //tutaj zapisujemy informacje zawarte w tzw. zmiennych serwerowych (ip..bleble)
  6.  
  7. //nazwa pliku do którego zapisujemy
  8. $nazwapliku = 'info.txt';
  9. //pobranie daty i czasu
  10. $data = date("l dS of F Y h:i:s A") ;
  11.  
  12. //operacje na pliku
  13. $plik = @fopen($nazwapliku, "a") ;
  14. flock($plik, 2) ;
  15. fwrite($plik,"$_SERVER[HTTP_USER_AGENT]|$_SERVER[HTTP_REFERER]|$ _SERVER[REMOTE_ADDR]|$data\n") ;
  16. flock($plik, 3) ;
  17. fclose($plik) ;
  18.  
  19. /*
  20.  
  21. $_SERVER[HTTP_USER_AGENT] = wersja przeglądarki z jakiej skrypt został wywołany
  22. $_SERVER[HTTP_REFERER] = strona z jakiej skrypt został wywołany
  23. $_SERVER[REMOTE_ADDR] = adres ip komutera z którego skrypt został wywołany
  24.  
  25. */
  26.  
  27. //tworzymy zmienną z informacjami o obrazie (wymiary, zawartość)
  28.  
  29. //wyświetlony tekst w obrazku
  30. $text = "bleeeeeeeeee" ;
  31. //rozmiar czcionki
  32. $font_size = 12 ;
  33. //krój czcionki (załaduj na serwer odpowiedni plik)
  34. $font_family = "times.ttf" ;
  35.  
  36. //wymiary obrazka na podstawie długości tekstu
  37. $box_size = ImageTTFBbox(12, 0, $font_family, $text) ;
  38.  
  39. $x = $box_size[2] - $box_size[6] + 7 ; //pobranie szerokosci
  40. $y = $box_size[3] - $box_size[7] + 7 ; //pobranie wysokosci
  41.  
  42. //tworzymy obraz o powyżej pobranych wymiarach
  43. $image = ImageCreate($x, $y) ;
  44.  
  45. //tworzymy kolor biały
  46. $color['1'] = ImageColorAllocate($image, 255, 255, 255) ;
  47. //tworzymy kolor czarny
  48. $color['2'] = ImageColorAllocate($image, 0, 0, 0) ;
  49.  
  50. //rysujemy biały prostokoąt
  51. ImageFilledRectangle($image, 0, 0, $x, $y, $color['1']) ;
  52.  
  53. //współrzędna x górnego lewego narożnika gdzie chcemy rozpocząc wypisywanie tekstu
  54. $x = 3 - $box_size[6] ;
  55. //jak wyżej tylko współrzędna y
  56. $y = 3 - $box_size[7] ;
  57.  
  58. //wypisanie tekstu do obrazka
  59. ImageTTFText($image, 12, 0, $x, $y, $color['2'], $font_family, $text) ;
  60.  
  61. //wysłanie obrazka do przeglądarki
  62. ImageJPG($image) ;
  63. //zniszczenie danych (przeglądarka już je otrzymała i nie są potrzebne)
  64. ImageDestroy($image) ;
  65. ?>


Źródło 2
Plik .htaccess identyczny jak w źródle nr 1
Plik hackme.jpg
  1. <?php
  2. //przesyłamy nagłówek przeglądarce co informuje ją o tym, że jesteśmy obrazkiem
  3. header("Content-type: image/jpg") ;
  4.  
  5. //tutaj zapisujemy informacje zawarte w tzw. zmiennych serwerowych (ip..bleble)
  6.  
  7. //nazwa pliku do którego zapisujemy
  8. $nazwapliku = 'info.txt';
  9. //pobranie daty i czasu
  10. $data = date("l dS of F Y h:i:s A") ;
  11.  
  12. //operacje na pliku
  13. $plik = @fopen($nazwapliku, "a") ;
  14. flock($plik, 2) ;
  15. fwrite($plik,"$_SERVER[HTTP_USER_AGENT]|$_SERVER[HTTP_REFERER]|$_SERVER[REMOTE_ADDR]|$dat
    a\n"
    ) ;
  16. flock($plik, 3) ;
  17. fclose($plik) ;
  18.  
  19. /*
  20.  
  21. $_SERVER[HTTP_USER_AGENT] = wersja przeglądarki z jakiej skrypt został wywołany
  22. $_SERVER[HTTP_REFERER] = strona z jakiej skrypt został wywołany
  23. $_SERVER[REMOTE_ADDR] = adres ip komutera z którego skrypt został wywołany
  24.  
  25. */
  26.  
  27.  
  28.  
  29. //tworzymy zmienną z informacjami o obrazie (wymiary, zawartość)
  30.  
  31. $img = imagecreate(280, 50); //rozmiary obrazka
  32. $background = imagecolorallocate($img, 215, 225, 235); //kolor tla obrazka
  33. $textcolor = imagecolorallocate($img, 0, 0, 0); //kolor tekstu obrazka
  34. imagestring($img, 5, 10, 7, 'Hackme.pl Przykładowy obrazek', $textcolor); //napis
  35. imagejpeg($img); //wysłanie obrazka do przeglądarki
  36. imagedestroy($img); //zniszczenie danych (przeglądarka już je otrzymała i nie są potrzebne)
  37.  
  38. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
gcdreak
post 12.12.2009, 22:49:59
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Równie dobrze możesz stworzyć plik obraz.php i w nim stworzyć kod, który stworzy obrazek i zwróci go do przeglądarki. Wtedy też wysyłasz do przeglądarki nagłówki. Popatrz na ten kod:
  1. ini_set('display_errors', '1');
  2.  
  3. // An information for browser
  4. header('Content-type: image/png');
  5.  
  6.  
  7. $sx = 300; // horizontal size of image
  8. $sy = 300; // vertical size of image
  9.  
  10. $img = imagecreate($sx, $sy);
  11.  
  12. $blue = imagecolorallocate($img, 0, 0, 255);
  13. $red = imagecolorallocate($img, 255, 0 ,0);
  14.  
  15. $font = 'ttf-japanese-gothic';
  16. putenv('GDFONTPATH=/usr/share/fonts/truetype');
  17. $string = 'Hello world!';
  18.  
  19. imagettftext($img, 42, -45, 10, 35, $red, $font, $string);
  20. //tutaj obrazek jest wysyłany
  21. imagepng($img);
  22.  
  23. imagedestroy($img);

Całość jest zamknięta w pliku .php i jest to bardziej czytelne - nie wprowadza zamieszania na serverze.
Go to the top of the page
+Quote Post
botnaizi
post 12.12.2009, 23:00:51
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


Tylko, że mi właśnie chodzi o to aby to było w pliku .jpg/.png . Wtedy chociażby w podpis mogę bez problemu dodać skrypt. Dlatego zależy mi aby było z innym rozszerzeniem ale jeszcze bardziej pytam z ciekawości smile.gif
Go to the top of the page
+Quote Post
gcdreak
post 12.12.2009, 23:11:44
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Chyba, że tak. Dobry pomysł z tym podpisem guitar.gif
Jeśli jednak chesz to zrobić to troche dziwne że coś nie działa bo teoretycznie powinny wystarczyć zmiany w .htaccess.
Weź wklej do tego pliku ten mój kod i sprawdź czy to działa. Jeśli zadziała to będziemy szukać błędu w twoim kodzie. Jeśli nie to coś w tych ustawieniach .htaccess będzie źle
Go to the top of the page
+Quote Post
botnaizi
post 12.12.2009, 23:23:04
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


wywaliło mi

  1. Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/logo.php:1) in /var/www/test/logo.php on line 7
  2. PNG  ��� IHDR��,��,����SF���PLTE��˙˙��?żż?_����ß���_[}e��[IDATxíOoÜ6ĹiIťŇ1ÇkľEáłŐńuŐúxÍ1kő5!ÇUŃ4ůŘĺ��HýńAÎkÁwđʲ��FŁ!őČU****ę D:yU;éćŇ+éćTŇ1LIÇ0# ëV:Š"ʰ(ÂZ Öd C°2ÚIF*<5Ź÷î0#˘&#65533;&#65533;ąxiXtę&#65533;k&#65533;ĄĽa]&#65533;C&#65533;ľ&#65533;&#65533;ŚgÖÁáÂ&#65533;uŰX\`°Tnq&#65533;ÁRĘŕB&#65533;Ľ,.8X×k8XáÁ2¸đ`Y\x°&#65533;oC# ۰&#65533;&#65533;Ľ HXJľXÉ/&#65533;íV?ĽŐÁú&#65533;hs gŹÖ%ŻM)M/kE&#65533;TëŹ&#65533;űÔ Î-é`ńóç7ő&#65533;čĽt@FV˘?×&#65533;ŁŰHGdä`m]ÍĎ&#65533;&#65533;˛u&#65533;učj~ëĆA˛r°ÖÔ%Ő&#65533;^¸?ĺĢŇpĚ­ˇçÚPň&#65533;G:w&#65533;joĘÂŔJ&#65533;.WÝÓŞ$kXťSćňpąTĚí˝űK#YĂrţQë˛&#65533;\Á&#65533;¨O&#65533;ü&#65533;#2¸Ň`ŇF&#65533;2&#65533;Ž&#65533;ĹŐó¨Ň¸2&#65533;V&#65533;Î&#65533;Ôß&#65533;ĘÔŘ&#65533;PHŹ&#65533;&#65533;?ěp1¤"ŃÚZ¸!?Ž�šđÔĎČ�(ł´ Ž��0,NůŇčţÁwóҰ�:8,ůáÁ���Ě|�F�Ĺ!�ăsň°8šĆ���)�żĎ�Ŕ2� } O@Ŕ˛c×đő,3L J ,]éĂ�5�%ŮŐĎĂ�ěęC�2K´Ť÷g�t�ę4ž ĽŰTŤém�kZłpÍŐ,áŽ�5Wŕĺ�ţj@Ńo!a%�°RHXęqĐIŔŇĽŕb| ��:�xĚ`ń|D9<����˛�ß!`qr _GaŔâÂ>A`ÇréŸK7}G k XĄ"ʰÖ\W šŽ^^ăŽţÓM)É@ĂŽ>˙hóíů˙ţ×4ěę[Î Ťo`8aWĎv úÂvőúnv|ŔăťzyłáŔń]˝ ÂUěťzYîŚl{�� şŽ^şËůža��ëęóC_ÁNrŢuőŤHXVÁmp���űŢŻ$ŽÜ?˛ Ĺyw­Ö9§žíÚľŤëžŔx&:­ű�Ż1ÜViG+r]0-�& E�ťśĄ éܸ¤ö&ŃŮ"��đŞ{ÉŮb0źtmßÜą(łX[;ěA[Ť/Łc���@Zz}ş{WJÇőÓQ:Y­ĐGV[ńY ˙Ôć&�jąşh§Źv˛Ít&ĆX÷Ťyv3&á´^zË �ĐÜ��Y ×bźqńZqÂ?ńg(ZľÝkć-Ňt��şŹéU5¨]ë/hó��ś,¤Łéľ§yE× O~ĺôŇaÇ%ŤâżŠ]:$lĹ _ĚtEW-Ýë��0˛ďĽăąŇÉţD§ƤŘg ýÍ^tVqÂótÎN:+]FÍ Nx ŢÔz"xÍě h:ď˝kž9Î%TÜ8*JĺÖnşâŔ)QJ}o âŔůSq˝şÝťIq?6îâ8p8á?¸KäŔąľŤż0Ž]öB9p> 8<Qň'�§pC0�úËü�sŕXEÎEÎEÎEÎÍ8pR�Ä�qŕT�CĄŠ'&#65533;¨Ć7&#65533;&#65533;8)Ć 9vŕ`Ŕ;p4Ź&#65533;Ż?ż&#65533;&#65533;Âtongue.gif*äŠ|\Ą'%�3�uz÷cĚŘ�aý¤?żô¸$÷ŔéUuÓ¨�]qEŘÇď�­;s�°Nĺ��­{�lę��_Hľ:ÚO�SB5×q�ă ay�ă��%žÎ<,ń´ĎŔ^n�aÂŇ�ŕqćŹřÚě�RĺĚ9qXó��5§k�"Ź�°(ÂZ k�"Ź�°(î�ł@Ł=p˛7�×ÝáN �NĂu<]ŘůôjÉ!ö`;šjÇE�č{°NĚŚÖ$iJ÷Ŕ1Ö¸7d^�f˛� �=přľËYŠ�Ě� ZŘHč÷ŔiÜ$=[J�a{ŕ°yđČ)��Ăň{ŕ¤ÝABçâ°źkcßWz!Ťß'óŻYŘ' ŤŰ§éçâr:ČĂęä˝l ��e�űŻ-J�ö"(�×XŤ�D8�Öî��ŘÖ^tŽţ¤O­Ő�ě\ýc˙ČÖŹVöőěc`u `$ëJč/â�¨+aíLgĂÍf2aXniĽéšXľ¸�ýŔÍVŢN` Ö-űF�ÍÔňOĄÄš5Â��<,Ľ>۰8śň°´>}żÁĹjư|A¸��˛ŹfŠEĽK=$ŹPţťĄÔ- Ë. ÄSdďÄ__ü]:Š��5T~ŹXŚ8ââJ Ĺ(*ŕöpąjaůőhú*@TTTTTTTTTTTTTTTTTTţěÉ0/s<&#65533;&#65533;&#65533;&#65533;IENDŽB`&#65533;



Ale podkreślam wkleiłem tylko ten kod od Ciebie nic nie dodając smile.gif

P.S Zmieniając .htaccess nic się nie naprawia ani nie psuje smile.gif
Go to the top of the page
+Quote Post
gcdreak
post 12.12.2009, 23:33:58
Post #6





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Tak, musiało wywalić błędy bo nie masz czcionek
  1.  
  2. ini_set('display_errors', '0');
  3. // An information for browser
  4. header('Content-type: image/png');
  5.  
  6.  
  7.  
  8. $sx = 300; // horizontal size of image
  9. $sy = 300; // vertical size of image
  10.  
  11. $img = imagecreate($sx, $sy);
  12.  
  13. $blue = imagecolorallocate($img, 0, 0, 255);
  14. $red = imagecolorallocate($img, 255, 0 ,0);
  15.  
  16.  
  17. //tutaj obrazek jest wysyłany
  18. imagepng($img);
  19.  
  20. imagedestroy($img);


Jeśli wyświetli niebieski kwadrat to ustawienia masz OK.
Go to the top of the page
+Quote Post
botnaizi
post 12.12.2009, 23:39:36
Post #7





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


  1. ?PNG  questionmark.gif? IHDR??,questionmark.gif,questionmark.gif?Cł6?questionmark.gifPLTE??˙˙??Ĺú?Ó?questionmark.gif"IDATh?íÁ1questionmark.gif


Czyli coś mam źle. Robię to na pliku obrazek.php

a .htaccess wygląda tak:

<Files obrazek.php>
ForceType application/x-httpd-php
</Files>

Nie wiem co jest nie tak


EDIT.

ok na zdalnym serwerze odpaliło teraz jak to zrobić w .jpg/.png ?

Ten post edytował botnaizi 12.12.2009, 23:46:47
Go to the top of the page
+Quote Post
maxil
post 12.12.2009, 23:47:15
Post #8





Grupa: Zarejestrowani
Postów: 212
Pomógł: 11
Dołączył: 8.11.2008
Skąd: Sieradz

Ostrzeżenie: (10%)
X----


bo ty obrazek zapewne chcesz wyświetlić poprzez

  1. include 'skrypt.php';


zrób to przez:

  1. <img src="skrypt.php" alt="" />
Go to the top of the page
+Quote Post
botnaizi
post 12.12.2009, 23:52:15
Post #9





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


Nie bardzo rozumiem. Może wytłumacze jeszcze raz. Chcę aby skrypt php wykonywał się w pliku .jpg czyli ktoś wejdzie w www.net.pl/obrazek.jpg i wykona mu się skrypt
Go to the top of the page
+Quote Post
gcdreak
post 12.12.2009, 23:59:53
Post #10





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Konfiguracja jest dobra! Równie dobrze możesz sprawdzić konfiguracje .htaccess za pomocą prostego kodu:
  1. echo "Hello world!";


Widać, że pliki .jpg są parsowane. Problem leży w skrypcie który ma bugi.
Go to the top of the page
+Quote Post
botnaizi
post 13.12.2009, 00:03:09
Post #11





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


Czyli co ? Bedzie ciężko to zrobić ?

a jak zmienie wszystko na .jpg to wyświetla tylko scieżke do pliku

http://***.***.***/pliki/test/obrazek.jpg

Go to the top of the page
+Quote Post
marcio
post 13.12.2009, 01:02:47
Post #12





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


A EXIF?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
botnaizi
post 13.12.2009, 13:08:18
Post #13





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


exif ? Mógłbys pokazać jak coś tym zrobić ? smile.gif

A na 100% metoda z .jpg działa bo w tutku z którego to brałem jest odnośnik do strony i tam właśnie wykonuje się taki skrypt.

A czy są jakieś inne metody aby dodać skrypt do np podpisu na forum ?
Go to the top of the page
+Quote Post
marcio
post 13.12.2009, 13:11:56
Post #14





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
exif ? Mógłbys pokazać jak coś tym zrobić ?


Nie jestem na 100% pewny ale kiedys byl explo pod jakiegos cms'a gdzie mozna bylo zalaczac obrazki do postow czy tam upload byl no i mozna bylo wstrzyknac kod php do exif'a image, zreszta proste edytory daja mozliwosc ustawienia exifa wiec pokombinuj.




P.S na milw0rm poszukaj explo na ten temat.
EDIT: http://sillydog.org/forum/sdt_11374.php tutaj masz wszystko.

Ten post edytował marcio 13.12.2009, 13:13:05


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
botnaizi
post 13.12.2009, 13:44:21
Post #15





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 8.12.2009

Ostrzeżenie: (0%)
-----


Nic z kodu z milw0rm'a nie rozumiem :] Problem leży w tym , że w ogóle przeglądarka nie wyświetla obrazka chociaż kod jest dobry
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:11