2015-08-20 4 views
1

Я новичок, когда дело доходит до понимания некоторых из атак в SQL-инъекции. Сейчас я видел эту атаку в моем журнале, и было интересно, если кто-нибудь может помочь мне понять, что это значитПроблемы с SQL-инъекцией

SQL Injection:

410'union/**/select/**/1/**/from/**/(select/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/concat(user,0x3a,password)/**/from/**/pwn_base_admin/**/limit/**/0,1),0x3a)a/**/from/**/information_schema.tables/**/group/**/by/**/a)b/**/where'1'='1. 
+0

Какие СУБД это? –

+0

Поиск 'параметризованных запросов' или' подготовленных операторов'. Они гарантируют, что злоумышленник не может «вломиться» в ваш код, включив SQL * (и, в частности, символ '' '*) в текстовые параметры свободной формы. * (Ваши SQL-операторы будут немного похожи на шаблоны строковых построителей с держателями мест для параметров, а не на то, что вы непосредственно подставляете введенные пользователем значения в ваш SQL.) * – MatBailie

ответ

1

не понимают этого полностью, но select concat(user,0x3a,password) from pwn_base_admin явно пытается получить каскадного строку имен пользователей и паролей, делящихся на «:»

concat(floor(rand(0)*2),0x3a,( примерно то же самое ... результат будет примерно 1:aUserName:UsersPassword.

Если вам нужна дополнительная помощь, пожалуйста, дайте еще некоторые детали (RDBMS, часть до «союза» ...)

Надеется, что это помогает

0

Кто-то активно пытаются получить несанкционированный доступ к системе - они взламывают.

Я не знаю, насколько важна эта система, но если это имеет какое-либо значение, вы, вероятно, должны отключить систему до тех пор, пока не разобраете часть доступа к базе данных. Первое место для поиска решений - это использование параметров привязки вместо конкатенации строк для ваших запросов sql.

Есть множество ресурсов, которые описывают, как использовать переменные связывания для любой СУБД вы используете, но вот одна статья, которую я нашел, чтобы вы начали:

http://use-the-index-luke.com/sql/where-clause/bind-parameters

Смежные вопросы