Просмотр полной версии : Алгоритм поиска 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),
если она не обнаружена - значит код потанцеально уязвим.
На сколька этот алгоритм эффективен - я хз.
помогайте господа.
Нужно собирать переменные, значения которых используются в запросах к БД, хотя п1 почти этому удовлетворяет.
Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.
А почему бы не собирать запросы к БД содержащие строки $_get[], $_post[], $_cookie[] ? Это будет означать, что скрипт наверняка уязвим
Digimortal
04.11.2006, 18:18
Вот насчет п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..
r0cha! я делаю проверку по регеспу на ф-цию такога рода.
Но смори не все же переменные которые есть в теле запроса доступны через GET/POST,
поетому я проверяю сWEBдоступные переменные на наличая в БДзапросе.
function un($code){
if (get_magic_quotes_gpc()) {
$code = stripslashes($code);
}
return $code;
}
EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.
С кукисами чуть поже, хотяб это автоматизировать.
ps: что еще господа?
ps2: пишу на PERL, http://forum.antichat.ru/thread26051-nJin4.html
EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.
Ты прав, такая конструкция редко встречается, но ведь она зараза работает
EXSlim гуд, уже включил., а регистр соблюдается? в $_get[], $_post[], $_cookie[] ???
Все согласны с этим алгоритмом?
Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать?
ну а я про что и говорю..
а регистр соблюдается?
да, и только $_GET[], $_POST[], $_COOKIE[]
guest3297
04.11.2006, 23:00
когда руками баги ищу то просто...
есть запрос к бд...
select Name,pass from users where '.$id.'
Вот те и иньекция...
тоесть есть в строке есть нефильтруймый передаваемый параметр то это бага...
как это реализовать в сканере я хз...
еще добавь include()
include() ета отдельная песьгя - все всем спасибо.
blackybr
07.11.2006, 19:50
ну еще можно исключать переменные которые фильтруются прегматчем например... и проверять на наличие !isset'а
Привет!
А как насчёт Register_Global ? :)
по конкретнее..что ты имеешь тут ввиду
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot