PDA

Просмотр полной версии : SQL-inj в MSSQL


FurA
15.11.2006, 02:34
Доброго времени суток уважаемые.

Такая ситуация. Есть контрольная панель сервера игры Lineage 2. Моя цель - получить через неё базу данных игры. НАшел уязвимость типа SQL-inj (нефильтруется переменная с именем пользователя в кукисах). Вот функция проверки кукисов:

function checkcookie($where, $cookieuser, $cookiepass, $dbname, $sqladdress, $sqluser, $sqlpass) {
connectdb($dbname,$sqladdress, $sqluser, $sqlpass);
if($where==0) {
$result = mssql_query(sprintf(SELECT_USER_PASS, $cookieuser));
$rows=mssql_num_rows($result);
if ($rows>0) {
$rows=mssql_fetch_assoc($result);
extract($rows);
$password = '0x' . bin2hex($password);
if(md5($password)==$cookiepass) {
quickrefresh('home.php');
} else {
resetcookies();
}
} else {
resetcookies();
}
} elseif($where==1) {
$result = mssql_query(sprintf(SELECT_USER_PASS, $cookieuser));
$rows=mssql_num_rows($result);
if ($rows>0) {
$rows=mssql_fetch_assoc($result);
extract($rows);
$password = '0x' . bin2hex($password);
if(md5($password)!=$cookiepass) {
notloggedin();
}
} else {
notloggedin();
}
}
}


запрос SELECT_USER_PASS в MSSQL, которому передается имя пользователя.

DEFINE("SELECT_USER_PASS", "SELECT account, password
FROM user_auth
WHERE account = '%s' ");


При подстановке кавычки в переменную с именем пользователя, хранящуюся в кукисах, вылетают следующие ошибки:

Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark after the character string '1234\' '. (severity 15) in E:\путь\к\скрипту\function.php on line 15

Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near '1234\' '. (severity 15) in E:\путь\к\скрипту\function.php on line 15

Warning: mssql_query() [function.mssql-query]: Query failed in E:\путь\к\скрипту\function.php on line 15

Warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in E:\путь\к\скрипту\function.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at E:\путь\к\скрипту\function.php:15) in E:\путь\к\скрипту\function.php on line 254

Warning: Cannot modify header information - headers already sent by (output started at E:\путь\к\скрипту\function.php:15) in E:\путь\к\скрипту\function.php on line 256


Вопрос номер 1.
Есть ли в MSSQL функцияя наподобе char()?
Вопрос номер 2
Как вообще получить эту долбанную бд?))

ПиСи
Могу предоставить все что нужно для проведения инъекции.
ПиПиСи
Если вы действительно поможете мне в этом, вы будете включены в состав авторов одной статьи =).

Заранее спасибо.

pop_korn
15.11.2006, 02:45
имхо

ничего не сделаеш, так как не сможеш составить корректный запрос

Incorrect syntax near '1234\' '

magic quotes не даст закрыть ковычку

хотя я не очень разбираюсь в sql, но раз уж mssql, то попробуй:
; EXEC master..sp_makewebtask "путь к сайту/1.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"

уточни синтаксис

guest3297
15.11.2006, 03:05
1) 0xдвоичный код
Стукни

k1b0rg
15.11.2006, 09:26
ну попробуй
username'+or+'1'='1

если проканает, значит пойдет. Если нет, значит надо вырубить magic_quotes и потом опять попробывать ))

madnet
15.11.2006, 11:41
<?
echo('0x'.bin2hex("подобие char"));
?>

если только за кавычку выйдеш.

FurA
16.11.2006, 18:14
Данный вопрос закрыт, всем спасибо. Отдельный респект cash`y, который помог с инъекцией.

Читайте статью в следующем xakepy ez!n3