Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Алгоритм поиска sql-inj в исходниках php сценариев |

04.11.2006, 17:29
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
Алгоритм поиска sql-inj в исходниках php сценариев
Вот собираюсь делать так, прошу попровлять и дополнять:
1. сбор всех имен переменных передоваемых GET/POST со всех php сценаривем
1.1 создание хеша имя_переменной/файл
2. сбор всех ф-ций которые фильтруют переменный используя addslashes magic_quotes_gpc str_replace
2.1 создание хеша имя_ф-ции/файл
3. сбор всех строк вида mysql_query($perm), где потом содержание $perm интерпалируем в значение хеша, а ключ хеша будет имя этой переменной.
Далее сравниваем, если строка запроса (п.3) к БД содержит переменную (п.1) , делаем проверку на наличия имени ф-ции (п.2),
если она не обнаружена - значит код потанцеально уязвим.
На сколька этот алгоритм эффективен - я хз.
помогайте господа.
|
|
|

04.11.2006, 17:46
|
|
Постоянный
Регистрация: 17.07.2005
Сообщений: 475
Провел на форуме: 1665310
Репутация:
488
|
|
Нужно собирать переменные, значения которых используются в запросах к БД, хотя п1 почти этому удовлетворяет.
Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.
|
|
|

04.11.2006, 18:15
|
|
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме: 347686
Репутация:
87
|
|
А почему бы не собирать запросы к БД содержащие строки $_get[], $_post[], $_cookie[] ? Это будет означать, что скрипт наверняка уязвим
|
|
|

04.11.2006, 18:18
|
|
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме: 6144796
Репутация:
1095
|
|
Сообщение от r0cha!
Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.
Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать? Заранее ведь не известно, будет ли анализируемый скрипт работать с значением magic_quotes_gpc = 1 или 0. Просто нужно чтоб в отчете прога (скрипт?) выводила, что существует вероятность SQL-inj в случае magic_quotes_gpc=0..
И еще: не надо забывать про cookies..
|
|
|

04.11.2006, 18:20
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
r0cha! я делаю проверку по регеспу на ф-цию такога рода.
Но смори не все же переменные которые есть в теле запроса доступны через GET/POST,
поетому я проверяю сWEBдоступные переменные на наличая в БДзапросе.
PHP код:
function un($code){
if (get_magic_quotes_gpc()) {
$code = stripslashes($code);
}
return $code;
}
EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.
С кукисами чуть поже, хотяб это автоматизировать.
ps: что еще господа?
ps2: пишу на PERL, http://forum.antichat.ru/thread26051-nJin4.html
Последний раз редактировалось n4n0bit; 04.11.2006 в 18:24..
|
|
|

04.11.2006, 18:27
|
|
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме: 347686
Репутация:
87
|
|
EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.
Ты прав, такая конструкция редко встречается, но ведь она зараза работает
|
|
|

04.11.2006, 18:35
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
EXSlim гуд, уже включил., а регистр соблюдается? в $_get[], $_post[], $_cookie[] ???
Все согласны с этим алгоритмом?
Последний раз редактировалось n4n0bit; 04.11.2006 в 18:37..
|
|
|

04.11.2006, 21:54
|
|
Постоянный
Регистрация: 17.07.2005
Сообщений: 475
Провел на форуме: 1665310
Репутация:
488
|
|
Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать?
ну а я про что и говорю..
да, и только $_GET[], $_POST[], $_COOKIE[]
Последний раз редактировалось r0cha!; 04.11.2006 в 21:59..
Причина: оп
|
|
|

04.11.2006, 23:00
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
когда руками баги ищу то просто...
есть запрос к бд...
select Name,pass from users where '.$id.'
Вот те и иньекция...
тоесть есть в строке есть нефильтруймый передаваемый параметр то это бага...
как это реализовать в сканере я хз...
еще добавь include()
|
|
|

04.11.2006, 23:12
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
include() ета отдельная песьгя - все всем спасибо.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|