ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

19.12.2011, 00:34
|
|
Guest
Сообщений: n/a
Провел на форуме: 29020
Репутация:
55
|
|
Навряд ли конечно, но может будет полезно, is_numeric() пропускает хекс
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]is_numeric[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'0x3a'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
возвращает bool(true), хз как это можно использовать тут, но может наведет кого на мысли.
|
|
|
|

19.12.2011, 00:39
|
|
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме: 2101094
Репутация:
672
|
|
Сообщение от trololoman96
trololoman96 said:
Навряд ли конечно, но может будет полезно, is_numeric() пропускает хекс
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]is_numeric[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'0x3a'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
возвращает bool(true), хз как это можно использовать тут, но может наведет кого на мысли.
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"] 0x756e696f6e2b73656c656374
[/COLOR][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]is_numeric[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'0x756e696f6e2073656c656374'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$test[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR]
bool(false)
откуда такая инфа ?
|
|
|

19.12.2011, 00:43
|
|
Guest
Сообщений: n/a
Провел на форуме: 29020
Репутация:
55
|
|
У меня 0x756e696f6e2073656c656374 возвращает true.
Тестилось на Apache/2.2.8 (Win32) PHP/5.2.6
--------
инфа взята с бложека разора, http://raz0r.name/mysli/phpids-za-i-protiv/
вычитано в коментах
|
|
|
|

19.12.2011, 00:46
|
|
Новичок
Регистрация: 04.11.2004
Сообщений: 5
Провел на форуме: 4512
Репутация:
0
|
|
Допустим, is_numeric обошли. Как из кавычек в запросе выйти?
|
|
|

19.12.2011, 00:50
|
|
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме: 2101094
Репутация:
672
|
|
Сообщение от trololoman96
trololoman96 said:
У меня 0x756e696f6e2073656c656374 возвращает true.
Тестилось на Apache/2.2.8 (Win32) PHP/5.2.6
--------
инфа взята с бложека разора, http://raz0r.name/mysli/phpids-za-i-protiv/
вычитано в коментах
0x3a пропускает потому что оно число в hex (13) 0011 (2^0 + 2^1) + 1010 (2^1+2^3)
а текст пропускать не может
|
|
|

19.12.2011, 00:57
|
|
Guest
Сообщений: n/a
Провел на форуме: 29020
Репутация:
55
|
|
Konqi, почему тогда 0x756e696f6e2073656c656374 у меня тоже возвращает true ?
---------
Протестировал еще на PHP Version 5.2.17 (linux) тоже вернуло true
|
|
|
|

19.12.2011, 01:04
|
|
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме: 2101094
Репутация:
672
|
|
Windows NT/ php 5.1.6 - false
Linux / 5.2.6 - true
Linux / 5.2.17 - true
хм =\
p.s если вернемся к теме, то ясно становится, если даже is_numeric Поможет обойти фильтр, то вес запрос все равно в hex виде не отправишь в бд, база операторы в хекс виде не поймет, так что с этим все равно облом, но тему is_numeric стоит исследовать..
|
|
|

19.12.2011, 01:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
Код:
Code:
Str: union select 1 from table#
Hex value:0x756e696f6e2073656c65637420312066726f6d207461626c6523
is_numeric? - bool(true)
--------------------
Str: $%^&*(Jkabhsdf
Hex value:0x24255e262a284a6b616268736466
is_numeric? - bool(true)
--------------------
Str: test
Hex value:0x74657374
is_numeric? - bool(true)
--------------------
Str: UniON/**/SELECT/**/1
Hex value:0x556e694f4e2f2a2a2f53454c4543542f2a2a2f31
is_numeric? - bool(true)
--------------------
Str: -1/*!UnioN SELEct*/1,2,3
Hex value:0x2d312f2a21556e696f4e2053454c4563742a2f312c322c33
is_numeric? - bool(true)
Если же убрать 0x в хекс значении:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
Код:
Code:
Str: union select 1 from table#
Hex value:756e696f6e2073656c65637420312066726f6d207461626c6523
is_numeric? - bool(false)
--------------------
Str: $%^&*(Jkabhsdf
Hex value:24255e262a284a6b616268736466
is_numeric? - bool(false)
--------------------
Str: test
Hex value:74657374
is_numeric? - bool(true)
--------------------
Str: UniON/**/SELECT/**/1
Hex value:556e694f4e2f2a2a2f53454c4543542f2a2a2f31
is_numeric? - bool(false)
--------------------
Str: -1/*!UnioN SELEct*/1,2,3
Hex value:2d312f2a21556e696f4e2053454c4563742a2f312c322c33
is_numeric? - bool(false)
Хотя это понятно, он воспринимает хек значение без 0x как обычную строку.
|
|
|
|

19.12.2011, 01:20
|
|
Guest
Сообщений: n/a
Провел на форуме: 262707
Репутация:
935
|
|
а вообще если разобрать код из первого поста:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]mysql_error[/COLOR][COLOR="#007700"]() .[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$num[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_numrows[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];
while ([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]'[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'ID: '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$id[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]' First name: '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$first[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]' Surname: '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$last[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]++;
}
}
}
[/COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR]
Я так полагаю автор привел не полный код уязвимого скрипта. В данном коде, лично я, уязвимостей не наблюдаю.
|
|
|
|

19.12.2011, 01:52
|
|
Новичок
Регистрация: 21.12.2009
Сообщений: 0
Провел на форуме: 15756
Репутация:
0
|
|
is_numeric() разумеется пропускает 0xlalala, потому что это ЧИСЛО.
И даже если переменная в запросе не будет обрамлена кавычками (id=$id)
то всё равно инъекции не будет, база такое гавно не схавает
А если бы это было возможно, то все WAFы сосали бы сразу, т.к. по этой логике можно сразу весь запрос переводить в HEX и не парится )
PS Об этом свойстве is_numeric примерно раз в год все вспоминают\открывают заново и начинаются движения и исследования, которые ничем не кончаются, и снова забвение на год )
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|