- 1
- 2
//Insert record into database
$result = mysql_query("INSERT INTO people(Name, Age, RecordDate) VALUES('" . $_POST["Name"] . "', " . $_POST["Age"] . ",now());");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
//Insert record into database
$result = mysql_query("INSERT INTO people(Name, Age, RecordDate) VALUES('" . $_POST["Name"] . "', " . $_POST["Age"] . ",now());");
Из документации к jTable http://www.jtable.org/GettingStarted
Был тут на ГК один персонаж, который мне доказывал, что так и надо делать, а все эти ваши подготовленные запросы и даже экранировки перед самим запросом - бесполезное фуфло.
Другой смолчал и стал пред ним ходить.
Сильнее бы не мог он возразить.
интересно, скоро ли он в них разочаровался...
Если где-то есть echo mysql_error, то можно ещё попробовать угадывать таблицы-поля.
Ну и, разумеется, самое жирное - если результат из таблицы выводится куда-то без обработки прямо в html.
Но вполне возможно сделать какую-то выборку и записать ее в поле этой записи (в данном случае в name). А потом зайти в свой профиль и подсмотреть.
Можно ещё добавить нового админа в систему, зайти с чёрного хода и потырить всё оттуда.
Просто ' || (select че-нибудь) || ' в качестве своего name подсунуть, да и все. Но в мускуле палки не работают, надо concat, поэтому так не проканает :(
> больше одной записи надо как-то поклеить
А почти во всех базах есть агрегирующие функции, которые позволяют поклеить пачку записей через разделитель.
> Можно ещё добавить нового админа в систему, зайти с чёрного хода и потырить всё оттуда.
Тоже вариант. Кстати, если есть одна возможность для иньекции, значит рядом всяко лежит еще 100500 других. И шансы найти подходящую велики :)
hardened security
тут вам не дырявый ынтерпрайз