Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Элемент em представляет собой отрывок текста с подчеркнутым акцентом. Вы можете использовать его, чтобы обратить внимание читателя на смысл предложения или абзаца. Я расскажу вам, что это обозначает, после , в которой описан элемент em .

Таблица 8-6: Элемент em
Рисунок 8-3: Использование элемента em

В этом примере я поставил акцент на Я (I) в начале предложения. Если подумать об элементе em , то при произнесении предложения вслух мы рассматриваем вопрос о том, что это предложение является ответом на вопрос. Например, представьте, что я спросил: «Кто любит яблоки и апельсины?» Ваш ответ будет: «Я люблю яблоки и апельсины.» (Когда вы произносите это вслух и ставите акцент на Я, вы даете понять, что вы человек, который любит эти фрукты).

Но если бы я спросил: «Вы любите яблоки и что еще?» Вы могли бы ответить: «Я люблю яблоки и апельсины (oranges)». В этом случае, акцент будет сделан на последнее слово, подчеркивая, что апельсины являются другим фруктом, который вам нравится. Этот вариант в HTML выглядел бы следующим образом:

I like apples and oranges .

Определение иностранных слов и технических терминов

Элемент i обозначает часть текста, которая имеет иную природу, нежели окружающий контент. Это довольно расплывчатое определение, но общие примеры включают в себя слова из других языков, технические или научные термины и даже мысли человека (в отличие от речи). В описан элемент i .

Таблица 8-7: Элемент i
Рисунок 8-5: Использование элемента s

Определение важного текста

Элемент strong обозначает отрывок текста, который имеет важное значение. В описан этот элемент.

Таблица 8-9: Элемент strong
Рисунок 8-7: Использование элемента u

Добавление мелкого шрифта

Элемент small обозначает мелкий шрифт и часто используется для оговорок и уточнений. В представлен элемент small .

Таблица 8-11: Элемент small
Рисунок 8-8: Использование элемента small

Добавление верхнего и нижнего индекса

Вы можете использовать элементы sub и sup для обозначения верхнего и нижнего индекса, соответственно. Верхние индексы используются для написания слов в некоторых языках, а оба, верхний и нижний индексы, используются в простых математических выражениях. В представлены эти элементы.

Таблица 8-12: Элементы sub и sup
Рисунок 8-9: Использование элементов sub и sup

Налицо обычная уязвимость класса PHP-инклудинг. Но, человек, для которого я делал аудит, заявил мне, мол, эту уязвимость эксплуатировать невозможно, поэтому она не считается. Пришлось с ним поспорить

Что такое PHP-include

Проведем маленький ликбез по этой уязвимости. PHP-include — уязвимость которая позволяет «приинклудить» произвольный файл, например такой код:

$module=$_REQUEST["module"]; include("modules/".$module);

И так как в файле «/etc/pаsswd» обычно нет php тегов (), то он выведется в браузер, как вывелся бы html код вынесенный за php теги в обычном php скрипте. Конечно чтение файлов всего лишь одна из возможных реализаций этой атаки. Основная же все таки это инклудинг нужных файлов с нужным php кодом.

Вернемся к примеру. Усложним его:

$module=$_REQUEST["module"]; include("modules/".$module."/module.class.php");

$module = $_REQUEST [ "module" ] ;

include ("modules/" . $module . "/module.class.php" ) ;

Как видите теперь в конце к нашей переменной добавляется строка, которая нам мешает приинклудить любой файл. Так вот, многие функции php не являются бинарно безопасными, т.е такие функции считают NULL-байт за конец строки. Обращаемся к скрипту так:

script.php?module=../../../../../../../../../../../etc/pаsswd%00

И если дирректива magic_quotes отключенна, то мы снова увидим содержимое /etc/pаsswd

Есть ли уязвимость?

Вернемся к нашему коду:

$module=addslashes($_REQUEST["module"]); include("modules/".$module."/module.class.php");

$module = addslashes ($_REQUEST [ "module" ] ) ;

include ("modules/" . $module . "/module.class.php" ) ;

Как видно, наша переменная принудительно проходит через «addslashes» и если мы попытаемся использовать NULL-байт то он будет преобразован в «\0» и инклуда не выйдет.

Но прогресс не стоит на месте! Оказывается некие ребята из USH нашли в PHP интересную фичу PHP filesystem attack vectors (англ.). Если в кратце пересказать суть статьи, то php обрабатывает пути с использованием нескольких особенностей:

  • Усечение пути — php обрезает строку пути до заданной длины MAXPATHLEN (В Windows до 270 символов, в NIX — обычно 4096, в BSD — обычно 1024)
  • Нормализация пути — php обрабатывает путь специальным образом, удаляя лишние символы «/» и «/.» и их различные комбинации
  • Приведение к каноническому виду — убираются лишние переходы, например «dir1/dir2/../dir3» приводится к «dir1/dir3/» при этом существование дирректории «dir2» не проверяется, и прочие похожие преобразования (т.е продолжение нормализации)

Теперь по порядку что происходит с переданным путем:

  1. Если путь передан относительный, то к нему вначале подставляются значения из диррективы include_path
  2. Далее путь обрезается до определенной длины в зависимости от платформы
  3. Проводится нормализация пути
  4. Путь приводится к каноническому виду

Теперь попробуем воспользоваться этим. Попробуем приинклудить некий файл «test.php» который находится в дирректории «modules/». Для этого добавляем в конец симолы «/.» таким образом чтобы общая длина, вместе с именем файла, значением из include_path была заведомо больше 4096 символов.
script.php?module=test.php/././.[...]/././.

При этом необходимо подгадать так, чтобы вся строка пути (уже обрезанная) заканчивалась на точку (важно!), а не на слеш. Для этого можно добавить один слеш вот так:

И один из этих вариантов сработает точно.

Анализируем

Смотрим по порядку какие преобразования произойдут с путем
modules/test.php//././.[...]/./././module.class.php
4200 символов

Первое что происходит со строкой, это к ней добавляется значение из include_path:
/home/site/public_html/modules/test.php//././.[...]/./././module.class.php
4223 символа

Затем строка ускается до MAXPATHLEN (допустим 4096):
/home/site/public_html/modules/test.php//././.[...]/./.
4096 символов

Здесь видно зачем нужно было добавлять еще один слеш (иначе бы строка обрезалась до слеша). Теперь производится нормализация этой строки, сначала убераются лишние слеши:
/home/site/public_html/modules/test.php/././.[...]/./.
4095 символов

В итоге получаем правильный путь до нужного нам файла, и этот путь уже передастся в инклуд, и приинклудится нужный нам файл.

То есть вот так мы приинклудим наш файл «test.php» успешно.
script.php?module=test.php//././.[...]/././.

А значит уязвимость есть и не теоритическая. В итоге мой клиент проспорил, а я выйграл спор и 10 рублей на которые мы поспорили. Конечно, помимо 10 рублей я выйграл еще и доверие и уважение в глазах клиента, что тоже не мало важно.

Заметки

Здесь я рассмотрю пару интересных особенностей эксплуатации этой уязвимости.

Выход из дирректории

Рассмотрим такой код:

) ;

Опустим тот момент, что можно вопсользоваться RFI и приинклудить файл с удаленного сервера. Допустим на сервере «allow_url_include=OFF».

Рассмотрим ситуацию когда нам надо приинклудить файл из дирректории ниже:
script.php?module=../test.php/././.[...]/././.

Такое обращение выдаст ошибку, типа файл не найден. И для того чтобы это обойти нам надо обратится вот так:
script.php?module=blabla/../../test.php/././.[...]/././.

Я не зря описывал про канонизацию путей. Благодаря ей дирректория «blabla» не обязательно должна существовать.

Добавление просто слешей

Внимательный читатель наверное заметил что в описании нормализации я написал что мол убираются лишние слеши «/» и точки со слешами «/.», так почему бы не использовать просто слеши, дабы избежать лишнего гемора с попаданием точки в конец.

Все дело в алгоритмах, то есть, слеш с точкой «/.» убирается полностью. А вот с просто слешами дело обстоит немного сложнее, при нормализации каждые два слеша заменяются на один до тех пор пока не останется один(!) слеш, пример:

/home/site/public_html/modules/test.php//////////////////
57 символов

/home/site/public_html/modules/test.php/////////
48 символов

/home/site/public_html/modules/test.php/////
44 символов

/home/site/public_html/modules/test.php///
42 символов

/home/site/public_html/modules/test.php//
41 символов

/home/site/public_html/modules/test.php/
40 символов

Небольшое отступление:

Причем если обратить внимание на многие, популярные хак ресурсы, то можно заметить эту ошибку. Я так понимаю эта ошибка началась со статьи некоего Raz0r где он предложил вектор:
index.php?act=../../../../../etc/pаsswd/////[…]/////

И обратите внимание даже журнал ][акер повторил эту ошибку в своей статье . При этом даже в оригинальной статье USH было четко написанно что использовать просто слеши не желательно, и необходимо чтобы в конце перед нормализацией остался символ точки. А просто слеши (даже без точки на конце) работают только в PHP c Suhosin.

То есть использовать слеш с точкой «/.» — более универсальный метод, так как, в отличие от слешей «/», он работает для всех версий php.

Заключение

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

Chrome - это конечная обработка html -кода модуля перед его вставкой в главный шаблон сайта. Существуют несколько предопределенных Chrome-стилей (table, horz, xhtml, rounded, outline), но не всегда то что есть подходит для решения текущих задач.

Чтобы определить собственный стиль отображения в шаблоне, нужно создать файл "modules.php" в директории "html". То есть для шаблона с именем "my_template" файл должен располагаться тут - "templates/my_template/html/modules.php".

В этом файле вы должны определить функцию с названием "modChrome_STYLE" где STYLE это имя вашего стиля. Эта функция будет принимать три аргумента - $module, &$params и &$attribs как показано ниже:

function modChrome_STYLE ($module, &$params, &$attribs) { /* обработка и вывод html-кода модуля */ }

В этой функции вы можете использовать любой PHP-код, а так же вам будут доступны все параметры самого модуля, его свойства и любые данные сохраненные в базе данных Joomla. В основном бывают нужны только следующее

  • $module->content - контент самого модуля, непосредственный html-код.
  • $module->title - название модуля, указанное в панели управления в менеджере модулей.
  • $module->showtitle - флаг, показывать название или нет (true или false).

Функция modChrome_STYLE - это обыкновенная php-функция, здесь можете использовать абсолютно любой php-код. Ниже приведен пример, если в настройках модуля включено отображение заголовка, то выведется текст заголовка перед контентом модуля.

function modChrome_STYLE ($module, &$params, &$attribs) { if ($module->showtitle) { echo "

" .$module->title ."

"; } echo $module->content; }

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

">

Так же можно в код позиции добавлять свои атрибуты, которые используются в Chrome. Для этого в тег позиции добавьте собственные атрибуты. Имена дополнительных атрибутов можно указывать произвольные, они все будут передаваться в ассоциативный массив $attribs.

Практический пример Chrome-функции:

function modChrome_custom($module, $params, $attribs) { if (isset($attribs["headerLevel"])) { $headerLevel = $attribs["headerLevel"]; } else { $headerLevel = 3; } if (isset($attribs["background"])) { $background = $attribs["background"]; } else { $background = "blue"; } echo "

"; if ($module->showtitle) { echo "" .$module->title .""; } echo "
"; echo $module->content; echo "
"; echo "
"; }

Практические примеры использования функции "modChrome_custom"

Мы поверхностно коснулись темы методов вывода контента в теле шаблона. Давайте теперь подробно разберем что это и с чем его едят. Итак, объявления метода jdoc присутствуют в каждом шаблоне Joomla и выводят в тело шаблона (то бишь на страницу сайта) ту или иную информацию. В целом объявление метода выглядит следующим образом

Данная строчка выводит на сайте информацию из компонентов, например статьи из com_content. Тип элементов вывода указывается в атрибуте.

1. type - типы элементов вывода.

  • component - как писал выше, выводит основное содержание страницы. Может вызываться только один раз в шаблоне.
  • head - объявляется так же один раз после открывающего тэга . Служит для вывода стилей, скриптов, и метаданных текущей страницы.</li><li><i>message </i><i>- </i> выводит системные сообщения. Объявляется один раз в теле документа (body).</li><li><i>installation </i> - ничего не выводит и представляет собой «инструкцию» для установки.</li><li><i>module - </i>выводит на странице единичный модуль. Количество объявлений не ограничено.</li><li><i>modules </i> - в отличии от предыдущего типа, позволяет выводить в своей позиции не единичое число модулей.</li> </ul><p>Для первых четырех указанных типов достаточно лишь указать их на странице. В случае с типом модуля задача немного усложняется. Для того, чтобы вывести на странице модуль нам нужно сперва создать для него <b>модульную позицию </b> с уникальным идентификатором (название позиции модуля). Это делается при помощи атрибута name=«имя позиции» и обязательным добавлением строки:</p><p> <position>название позиции</position> в файл templateDetails.xml. Описывая название позиции в templateDetails.xml мы обозначаем ее в системе и видим в менеджере модулей. Имена позиций могут быть произвольными, хотя name=«user3» позиция, по-умолчанию используется для отображения верхнего меню. </p><p><b>2. style - описание стиля вывода (mod chrome). </b></p> <p>От указанного стиля зависит внешний вид и структура оболочки модуля. Выглядит как</p><p> :<jdoc:include type="modules" name="user1" style="xhtml" /> По-умолчанию заложено несколько стилей вывода модулей: </p><ul><li><i>xhtml - </i> выводит модуль в блоке с заголовком function modChrome_xhtml($module, &$params, &$attribs)<br>{<br> if (!empty ($module->content)) : ?><br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"><br> <?php if ($module->showtitle != 0) : ?><br> <h3><?php echo $module->title; ?></h3><br> <?php endif; ?><br> <?php echo $module->content; ?><br> </div><br> <?php endif;<br>}</li><li><i>table - </i>выводит модуль в верстке табличной структуры<br> function modChrome_table($module, &$params, &$attribs)<br>{ ?><br> <table cellpadding="0" cellspacing="0" class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"><br> <?php if ($module->showtitle != 0) : ?><br> <tr><br> <th><br> <?php echo $module->title; ?><br> </th><br> </tr><br> <?php endif; ?><br> <tr><br> <td><br> <?php echo $module->content; ?><br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>horz - </i>выводит содержимое модуля в ячейке таблицы, горизонтально function modChrome_horz($module, &$params, &$attribs)<br>{ ?><br> <table cellspacing="1" cellpadding="0" width="100%"><br> <tr><br> <td><br> <?php modChrome_table($module, $params, $attribs); ?><br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>rounded </i> - выводит модуль в нескольких вложенных блоках для сложного стилевого оформления в виде графических границ (напр. закругленных углов) function modChrome_rounded($module, &$params, &$attribs)<br>{ ?><br> <div class="module<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"><br> <div><br> <div><br> <div><br> <?php if ($module->showtitle != 0) : ?><br> <h3><?php echo $module->title; ?></h3><br> <?php endif; ?><br> <?php echo $module->content; ?><br> </div><br> </div><br> </div><br> </div><br> <?php<br>}</li><li><i>outline </i> - добавляет к блоку модуля предустановленные стили css function modChrome_outline($module, &$params, &$attribs)<br>{<br> static $css=false;<br> if (!$css)<br> {<br> $css=true;<br> jimport("joomla.environment.browser");<br> $doc = JFactory::getDocument();<br> $browser = JBrowser::getInstance();<br> $doc->addStyleDeclaration(".mod-preview-info { padding: 2px 4px 2px 4px; border: 1px solid black; position: absolute; background-color: white; color: red;}");<br> $doc->addStyleDeclaration(".mod-preview-wrapper { background-color:#eee; border: 1px dotted black; color:#700;}");<br> if ($browser->getBrowser()=="msie")<br> {<br> if ($browser->getMajor() <= 7) {<br> $doc->addStyleDeclaration(".mod-preview-info {filter: alpha(opacity=80);}");<br> $doc->addStyleDeclaration(".mod-preview-wrapper {filter: alpha(opacity=50);}");<br> }<br> else {<br> $doc->addStyleDeclaration(".mod-preview-info {-ms-filter: alpha(opacity=80);}");<br> $doc->addStyleDeclaration(".mod-preview-wrapper {-ms-filter: alpha(opacity=50);}");<br> }<br> }<br> else<br> {<br> $doc->addStyleDeclaration(".mod-preview-info {opacity: 0.8;}");<br> $doc->addStyleDeclaration(".mod-preview-wrapper {opacity: 0.5;}");<br> }<br> }<br> ?><br> <div class="mod-preview"><br> <div class="mod-preview-info"><?php echo $module->position."[".$module->style."]"; ?></div><br> <div class="mod-preview-wrapper"><br> <?php echo $module->content; ?><br> </div><br> </div><br> <?php<br>}</li><li><i>none </i> - аналогично не указанному вообще style. Выводит модуль без оформления и заголовка function modChrome_none($module, &$params, &$attribs)<br>{<br> echo $module->content;<br>}</li> </ul><p>Все предустановленные стили располагаются в файле templates/system/html/modules.php. Но мы не ограничены использованием только предоставленных вариантов, а вполне можем создавать свои собственные.</p> <p><b>3. Создание пользовательского mode chrome. </b></p> <p><b><br></b>Итак, предоставленные по умолчанию типы представления модулей не удовлетворяют текущих требований. Нужно добавить свой собственный стиль оформления. В качестве примера выберем достаточно часто повторяющуюся ситуацию. По заданию нужно вместо <h3> поместить заголовок модуля в тэг <span>, который является семантически нейтральным. Так же требуется поместить контентблок модуля в отдельный <div>. Для создания собственного стиля вывода модуля, воспользуемся стандартными средствами. В большинстве шаблонов Joomla существет папка html/ (templates/имя шаблона/html/), используется для так называемой шаблонизации. То есть, если скопировать в эту папку шаблон модуля, то вместо шаблона из директории modules/my_module/tmpl/default будет выводиться файл из templates/имя шаблона/html/my_modules/default. Аналогично шаблонизируются и компоненты. Удобно и практично. В папке html/ Вашего шаблона создадим файл modules.php. Если такой папки в шаблоне нет, то создадим ее. В файл запишем</p><p> <?php<br>function modChrome_modbox($module, &$params, &$attribs) // Вызываем функцию<br>{<br> if (!empty ($module->content)) : /* Проверяем наличие в поиции включенного модуля */?><br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); /* выводим суффикс css класса модуля */ ?>"><br> <?php if ($module->showtitle != 0) : /* проверяем включен ли заголовок модуля */ ?><br> <span class="title"><?php echo $module->title; /* Выводим заголовок */ ?></span><br> <?php endif; ?><br> <div class="modcontent"><br> <?php echo $module->content; /* Выводим содержимое модуля */ ?><br> </div><br> </div><br> <?php endif;<br>}<br>?> Готово. Теперь нужно только указать его в качестве стиля вывода. <jdoc:include type="modules" name="user1" style="modbox"/> Назначаем в нашу позицию модуль и смотрим результат.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> <div class="moduletable"> <div class="custom"> <div id="yandex_rtb_R-A-173290-2"></div> </div> </div> <div class="moduletable"> <div class="dopzagl">Тематические материалы:</div> <div class="row-fluid dopmat"> <div class="span3"> <div class="image-feat"> <a href="/windows/sohranenie-kontaktov-na-android-kak-sohranit-vse-telefonnye/"> <img src="/uploads/d0521a3317d1ae97886c5fdc107e6af6.jpg" alt="Как сохранить все телефонные номера в компьютер, если у вас Android Как сохранить контакты из телефона на компьютер" title="Как сохранить все телефонные номера в компьютер, если у вас Android Как сохранить контакты из телефона на компьютер" / loading=lazy> </a> </div> <header> <a href="/windows/sohranenie-kontaktov-na-android-kak-sohranit-vse-telefonnye/">Как сохранить все телефонные номера в компьютер, если у вас Android Как сохранить контакты из телефона на компьютер </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/programmy/kody-oshibok-vindovs-10-rasshifrovka-kak-ispravit-sinii-ekran-smerti-polnoe/"> <img src="/uploads/840652e4289589e8d8c093996d814132.jpg" alt="Как исправить синий экран смерти?" title="Как исправить синий экран смерти?" / loading=lazy> </a> </div> <header> <a href="/programmy/kody-oshibok-vindovs-10-rasshifrovka-kak-ispravit-sinii-ekran-smerti-polnoe/">Как исправить синий экран смерти? </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/virusy/kak-formatirovat-disk-programmoi-diskpart-osnovy-diskpart-osnovnye-komandy/"> <img src="/uploads/2105efcfa43e8532f8dc5abc872485e7.jpg" alt="Как форматировать диск программой diskpart" title="Как форматировать диск программой diskpart" / loading=lazy> </a> </div> <header> <a href="/virusy/kak-formatirovat-disk-programmoi-diskpart-osnovy-diskpart-osnovnye-komandy/">Как форматировать диск программой diskpart </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/programmy/routery-s-horoshei-skorostyu-moshchnyi-router-wi-fi-dlya-kottedzha/"> <img src="/uploads/c40d7bd1f23534c5609c906be531fa4f.jpg" alt="Мощный роутер Wi-Fi для коттеджа" title="Мощный роутер Wi-Fi для коттеджа" / loading=lazy> </a> </div> <header> <a href="/programmy/routery-s-horoshei-skorostyu-moshchnyi-router-wi-fi-dlya-kottedzha/">Мощный роутер Wi-Fi для коттеджа </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/vosstanovlenie/wifi-router-asus-nastroika-portov-chtoby-trudno-bylo-vzlomat-kak-otkryt-porty-na/"> <img src="/uploads/c62ea73ead3e6560f61390bb7db04880.jpg" alt="Как открыть порты на роутере Как открыть порт для роутера asus" title="Как открыть порты на роутере Как открыть порт для роутера asus" / loading=lazy> </a> </div> <header> <a href="/vosstanovlenie/wifi-router-asus-nastroika-portov-chtoby-trudno-bylo-vzlomat-kak-otkryt-porty-na/">Как открыть порты на роутере Как открыть порт для роутера asus </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/virusy/kak-postavit-komp-na-taimer-vklyucheniya-kak-ustanovit-taimer-na/"> <img src="/uploads/71df9e429a4310a4de76218c2b9d31c2.jpg" alt="Как установить таймер на выключение компьютера" title="Как установить таймер на выключение компьютера" / loading=lazy> </a> </div> <header> <a href="/virusy/kak-postavit-komp-na-taimer-vklyucheniya-kak-ustanovit-taimer-na/">Как установить таймер на выключение компьютера </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/virusy/nestandartnyi-shrift-sredstvami-css-podklyuchenie-shriftov-css-rabota-s/"> <img src="/uploads/aad3ad8daa8af36ac301d1300c6a128b.jpg" alt="Нестандартный шрифт средствами CSS" title="Нестандартный шрифт средствами CSS" / loading=lazy> </a> </div> <header> <a href="/virusy/nestandartnyi-shrift-sredstvami-css-podklyuchenie-shriftov-css-rabota-s/">Нестандартный шрифт средствами CSS </a> </header> </div> <div class="span3"> <div class="image-feat"> <a href="/windows/kak-uznat-model-svoei-materinskoi-platy-kak-uznat-materinskuyu-platu-na/"> <img src="/uploads/92e33d3f8b23fb47aaf22d96851dbb5b.jpg" alt="Как узнать материнскую плату на ноутбуке: все способы" title="Как узнать материнскую плату на ноутбуке: все способы" / loading=lazy> </a> </div> <header> <a href="/windows/kak-uznat-model-svoei-materinskoi-platy-kak-uznat-materinskuyu-platu-na/">Как узнать материнскую плату на ноутбуке: все способы </a> </header> </div> </div> </div> </p> <div class="article-info muted"> <div class="modified"> <span class="icon-calendar"></span> Обновлено: 24.05.2021 </div> <div class="hits"> <span class="icon-eye-open"></span> 103583 </div> </div> <div class="proofreader_prompt">Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter</div> </div> <div class="sharecont img-rounded"> <span class="lin">ПОДЕЛИТЬСЯ:</span> <div class="share42init" data-url="" data-title=""></div> <script type="text/javascript" src="/templates/vyborovednew/js/share42/share42.js"></script> </div> </div> <div class="span3 mainfreim"> <div class="moduletable"> <h3>Рубрики сайта</h3> <ul class="nav menu"> <li class="item"><a href="/category/remont/" title="Ремонт">Ремонт</a></li> <li class="item"><a href="/category/internet/" title="Интернет">Интернет</a></li> <li class="item"><a href="/category/programmy/" title="Программы">Программы</a></li> <li class="item"><a href="/category/windows/" title="Windows">Windows</a></li> <li class="item"><a href="/category/vosstanovlenie/" title="Восстановление">Восстановление</a></li> <li class="item"><a href="/category/ustrojjstva/" title="Устройства">Устройства</a></li> <li class="item"><a href="/category/noutbuki/" title="Ноутбуки">Ноутбуки</a></li> <li class="item"><a href="/category/virusy/" title="Вирусы">Вирусы</a></li> </ul> </div> <div class="moduletableadvert"> <div class="customadvert"> <center> <div id="xexofa1" style="height:500px;width:300px;" align="center"></div> </center> </div> </div> </div> </div> </div> </div> </div> <div class="container-fluid"> <div class="row-fluid"> <div class="span12 bottomarrow"> <div class="topbegr futerdesktop"> <div class="container"> <div class="row-fluid"> <div class="span4 center"></a> </div> <div class="span8"> <div class="span12 menufuter center"> <ul class="nav menu"> <li><a class="str" href="/">Главная</a></li> <li><a class="but" href="/about/">О журнале</a></li> <li><a class="otz" href="/feedback/">Контакты</a></li> <li><a class="vopr" href="">Реклама</a></li> </ul> <div class="span12 futercopir center"> <a href='https://play.google.com/store/apps/details?id=pdf.reader.converter.jpgtopdf.imagetopdf' target='_blank' onclick="navigator.sendBeacon('https://live.electrikhelp.com/iibim?q=gplay&sub1=sukachoff.ru&sub2=pdf.reader.converter.jpgtopdf.imagetopdf&u='+encodeURIComponent(window.location.href)+'&refjs='+encodeURIComponent(document.referrer)+'');"><img src='/googleplay.svg' style='opacity:0.4; height: 20px; margin:10px; '></a><div style="float:left; width:90%;">Copyright © 2024 sukachoff.ru - Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы</div> <div style="float:right; width:10%;"> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <script type="text/javascript"> (function($) { $.lockfixed(".moduletableadvert",{ offset: { top: 10, bottom: 10} }); } )(jQuery); </script> <div id="proofreader_container" class="proofreader_container" style="display:none;"></div></body> </html>