Показать сообщение отдельно

  #6  
Старый 10.08.2011, 00:47
Tigger
Познавший АНТИЧАТ
Регистрация: 27.08.2007
Сообщений: 1,107
С нами: 9846041

Репутация: 1177


По умолчанию

Цитата:
Сообщение от winstrool  
то на сколько я понимаю у тебя уязвимость в переменной $albumID так как она никак не фильтруется, следовательно можно выполнить SQL-инекцию
Хе-хе, ты ошибаешься.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$albumID[/COLOR][COLOR="#007700"]= (int)[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'act_album'[/COLOR][COLOR="#007700"]];

[/
COLOR][/COLOR
В переменную albumID не попадет ничего кроме чисел.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$newalbum[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]attribute_escape[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'newalbum'[/COLOR][COLOR="#007700"]]);[/COLOR][/COLOR
Если я правильно нагуглил эту ф-цию из WP, то и тут тоже скули нету.

Цитата:
Сообщение от ne0k  
И можно ли в наше время обойти intval()
intval() можно обойти только если он присутствует в условии, к примеру такой код:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

[/
COLOR][/COLOR
Exp: .php?id=123'

Return: 123'

Если наш параметр начинает с числа, то intval() пропустит и в самом запросе переменная уже не фильтруется => SQL-inject возможен при таком условии.

С is_numeric такое не прокатит.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]is_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$gid[/COLOR][COLOR="#007700"])){

[/COLOR][COLOR="#0000BB"]$serial_sort[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]serialize[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$gid[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$wpdb[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"UPDATE[/COLOR][COLOR="#0000BB"]$wpdb[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]nggalbum[/COLOR][COLOR="#DD0000"]SET sortorder = '[/COLOR][COLOR="#0000BB"]$serial_sort[/COLOR][COLOR="#DD0000"]' WHERE id =[/COLOR][COLOR="#0000BB"]$albumID[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]);

[/COLOR][/COLOR
А вот здесь вот провести SQL-inject вполне возможно...

При условии что $gid можно манипулировать или переопределить через register_globals.

Вот проверил на локалке с таким кодом:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

[/
COLOR][/COLOR
Exp: test.php?id[]=asd";}'+WHERE+id=1--+

Return: UPDATE SET sortorder = 'a:1:{i:0;s:21:"asd";}' WHERE id=1-- ";}' WHERE id = 1

Need:magic_quotes=off

Комментом мы обрезали оставшийся кусок и в принципе должно работать...
 
Ответить с цитированием