Skapa din egen Chrome-stil för moduler. Lägga till en accent Lägga till enkla snedstreck

Detta är en vanlig sårbarhet för klassen inklusive PHP. Men personen som jag gjorde granskningen för sa till mig att denna sårbarhet inte kan utnyttjas, så den räknas inte. Jag var tvungen att argumentera med honom

Vad är PHP-include

Låt oss genomföra ett litet utbildningsprogram om denna sårbarhet. PHP-include är en sårbarhet som låter dig "inkludera" en godtycklig fil, till exempel denna kod:

$modul=$_REQUEST["modul"]; include("moduler/".$modul);

Och eftersom det vanligtvis inte finns några PHP-taggar i filen "/etc/passwd" (), så kommer den att visas i webbläsaren, precis som html-koden skulle visas bakom php-taggarna i ett vanligt php-skript. Naturligtvis är att läsa filer bara en av de möjliga implementeringarna av denna attack. Det viktigaste är införandet av de nödvändiga filerna med den nödvändiga PHP-koden.

Låt oss gå tillbaka till exemplet. Låt oss komplicera det:

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

$modul = $_REQUEST [ "modul" ] ;

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

Som du kan se läggs nu en rad till vår variabel i slutet, vilket hindrar oss från att inkludera någon fil. Så många PHP-funktioner är inte binärsäkra, det vill säga sådana funktioner betraktar en NULL-byte som slutet på en sträng. Vi kommer åt skriptet så här:

script.php?module=../../../../../../../../../../../etc/passwd%00

Och om direktivet magic_quotes är inaktiverat, kommer vi återigen att se innehållet i /etc/passwd

Finns det en sårbarhet?

Låt oss gå tillbaka till vår kod:

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

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

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

Som du kan se tvingas vår variabel gå igenom "addslashes" och om vi försöker använda en NULL-byte kommer den att konverteras till "\0" och inkluderingen kommer inte att fungera.

Men framstegen står inte stilla! Det visar sig att några killar från USH hittade en intressant funktion i PHP: PHP-filsystem attackvektorer (engelska). För att kort sammanfatta artikelns kärna, bearbetar php sökvägar med flera funktioner:

  • Banavkortning- php trunkerar sökvägssträngen till den angivna längden MAXPATHLEN (på Windows upp till 270 tecken, på NIX - vanligtvis 4096, på BSD - vanligtvis 1024)
  • Bannormalisering— php bearbetar sökvägen på ett speciellt sätt och tar bort extra tecken "/" och "/." och deras olika kombinationer
  • Reduktion till kanonisk form— onödiga övergångar tas bort, till exempel konverteras "dir1/dir2/../dir3" till "dir1/dir3/" medan förekomsten av katalogen "dir2" inte kontrolleras, och andra liknande transformationer (d.v.s. fortsättning av normaliseringen )

Nu, i ordning, vad händer med den passerade vägen:

  1. Om sökvägen är relativ, ersätts först värdena från include_path-direktivet
  2. Banan trimmas sedan till en viss längd beroende på plattform
  3. Banan håller på att normaliseras
  4. Stigen reduceras till kanonisk form

Låt oss nu försöka använda detta. Låt oss försöka inkludera en viss fil "test.php" som finns i katalogen "modules/". För att göra detta, lägg till symbolen "/." till slutet. så att den totala längden, tillsammans med filnamnet och värdet från include_path, uppenbarligen är större än 4096 tecken.
script.php?module=test.php/././.[...]/././.

I det här fallet måste du gissa så att hela vägsträngen (redan trimmad) slutar med en prick (viktigt!), och inte med ett snedstreck. För att göra detta kan du lägga till ett snedstreck så här:

Och ett av dessa alternativ kommer definitivt att fungera.

Analyserar

Låt oss titta i ordning på vilka förändringar som kommer att hända med vägen
modules/test.php//././.[...]/./././module.class.php
4200 tecken

Det första som händer med raden är att värdet från include_path läggs till den:
/home/site/public_html/modules/test.php//././.[...]/./././module.class.php
4223 tecken

Strängen trunkeras sedan till MAXPATHLEN (låt oss säga 4096):
/home/site/public_html/modules/test.php//././.[...]/./.
4096 tecken

Här kan du se varför det var nödvändigt att lägga till ytterligare ett snedstreck (annars hade linjen klippts av till snedstrecket). Nu är den här linjen normaliserad, först tar du bort de extra snedstrecket:
/home/site/public_html/modules/test.php/././.[...]/./.
4095 tecken

Som ett resultat får vi rätt sökväg till filen vi behöver, och denna sökväg kommer redan att överföras till include, och filen vi behöver kommer att inkluderas.

Det vill säga, det är så här vi kommer att inkludera vår "test.php"-fil framgångsrikt.
script.php?module=test.php//././.[...]/././.

Det betyder att sårbarheten inte är teoretisk. Som ett resultat förlorade min klient vadet, och jag vann vadet och de 10 rubel vi satsat på. Naturligtvis, förutom 10 rubel, vann jag också förtroende och respekt i klientens ögon, vilket också är viktigt.

Anteckningar

Här kommer jag att titta på ett par intressanta funktioner för utnyttjande av denna sårbarhet.

Avsluta katalogen

Tänk på den här koden:

) ;

Låt oss hoppa över punkten att du kan använda RFI och inkludera en fil från en fjärrserver. Låt oss säga "allow_url_include=OFF" på servern.

Låt oss överväga en situation när vi behöver inkludera en fil från katalogen nedan:
script.php?module=../test.php/././.[...]/././.

En sådan begäran kommer att generera ett fel som att filen inte hittas. Och för att komma runt detta måste vi kalla det så här:
script.php?module=blabla/../../test.php/././.[...]/././.

Det var inte förgäves som jag beskrev kanoniseringen av stigar. Tack vare det behöver "blabla"-katalogen inte existera.

Lägga till enkla snedstreck

En uppmärksam läsare har säkert lagt märke till att jag i normaliseringsbeskrivningen skrev att extra snedstreck “/” och prickar med snedstreck “/.” tas bort, så varför inte bara använda snedstreck för att slippa onödigt krångel med punkten som slutar i slutet.

Allt handlar om algoritmerna, det vill säga ett snedstreck med en punkt "/." är helt borttagen. Men med enkla snedstreck är situationen lite mer komplicerad; under normaliseringen ersätts vartannat snedstreck med ett tills det bara finns ett (!) snedstreck kvar, exempel:

/home/site/public_html/modules/test.php///////////////////
57 tecken

/home/site/public_html/modules/test.php//////////
48 tecken

/home/site/public_html/modules/test.php/////
44 tecken

/home/site/public_html/modules/test.php///
42 tecken

/home/site/public_html/modules/test.php//
41 tecken

/home/site/public_html/modules/test.php/
40 tecken

En liten utvikning:

Dessutom, om du uppmärksammar många populära hackresurser kommer du att märka detta fel. Som jag förstår det började detta fel med en artikel av en viss Raz0r där han föreslog en vektor:
index.php?act=../../../../../etc/passwd/////[…]/////

Och var uppmärksam även på tidningen ][aker upprepade detta misstag i sin artikel. Dessutom, även i den ursprungliga USH-artikeln skrevs det tydligt att det inte är tillrådligt att använda bara snedstreck, och det är nödvändigt att ett punkttecken lämnas i slutet innan normalisering. Men enkla snedstreck (även utan en prick i slutet) fungerar bara i PHP med Suhosin.

Det vill säga, använd ett snedstreck med en punkt "/." - en mer universell metod, eftersom den, till skillnad från snedstreck "/", fungerar för alla versioner av php.

Slutsats

Jag hoppas att den här artikeln hjälper dig att förstå att du inte bör lämna ens de minsta sårbarheter i dina skript, eftersom du förr eller senare kan utveckla din egen attackvektor för dem, vilket kan leda till allvarliga konsekvenser.

En av de fantastiska sakerna med PHP är hur det fungerar med HTML-formulär. Huvudsaken här är att varje formulärelement automatiskt blir tillgängligt för dina PHP-program. För detaljerad information om hur du använder formulär i PHP, läs avsnittet. Här är ett exempel på ett HTML-formulär:

Exempel #1 Enklaste HTML-formulär

Ditt namn:

Din ålder:

Det är inget speciellt med denna form. Detta är ett vanligt HTML-formulär utan några speciella taggar. När användaren fyller i formuläret och klickar på knappen Skicka kommer sidan action.php att anropas. Den här filen kan ha något i stil med:

Exempel #2 Visar formulärdata

Hallå, .
Till digår.

Exempel på utdata från detta program:

Hej, Sergey. Du är 30 år gammal.

Om du inte tar hänsyn till kodbitarna med htmlspecialchars() Och (int), bör den här kodens funktionsprincip vara enkel och begriplig. htmlspecialchars() Säkerställer att "speciella" HTML-tecken är korrekt kodade så att skadlig HTML eller Javascript inte infogas på din sida. Åldersfältet, som vi vet ska vara ett tal, kan vi helt enkelt konvertera till heltal, som automatiskt tar bort oönskade tecken. PHP kan också göra detta automatiskt med filtertillägget. Variablerna $_POST["namn"] och $_POST["ålder"] ställs in automatiskt för dig av PHP. Tidigare använde vi $_SERVER superglobal variabel, men här använder vi också $_POST superglobal variabel, som innehåller alla POST-data. Lägg märke till att sändningsmetod(metoden) av vårt formulär är POST. Om vi ​​använde metoden SKAFFA SIG, då skulle vår formulärinformation finnas i den superglobala variabeln $_GET . Alternativt kan du använda variabeln $_REQUEST om datakällan inte spelar någon roll. Denna variabel innehåller en blandning av GET, POST, COOKIE-data.

15 år sedan

Enligt HTTP-specifikationen bör du använda POST-metoden när du använder formuläret för att ändra tillståndet för något på serversidan. Till exempel, om en sida har ett formulär som tillåter användare att lägga till sina egna kommentarer, som den här sida här ska formuläret använda POST. Om du klickar på "Ladda om" eller "Uppdatera" på en sida som du nådde via ett POST, är det nästan alltid ett fel -- du bör inte posta samma kommentar två gånger -- vilket är anledningen till att dessa sidor inte är bokmärkta eller cachade.

Du bör använda GET-metoden när ditt formulär, ja, tar bort något från servern och faktiskt inte ändrar någonting. Till exempel bör formuläret för en sökmotor använda GET, eftersom sökning på en webbplats inte bör ändra något som klienten kanske bryr sig om, och att bokmärka eller cachelagra resultaten av en sökmotorfråga är lika användbart som att bokmärka eller cachelagra en statisk HTML-sida.

2 år sedan

Värt att förtydliga:

POST är inte säkrare än GET.

Skälen till att välja GET vs POST involverar olika faktorer som avsikten med begäran (sänder du information?), storleken på begäran (det finns gränser för hur lång en URL kan vara och GET-parametrar skickas in webbadressen), och hur lätt du vill att åtgärden ska vara delbar -- Exempel, Google-sökningar är GET eftersom det gör det enkelt att kopiera och dela sökfrågan med någon annan helt enkelt genom att dela webbadressen.

Säkerhet är bara ett övervägande här på grund av det faktum att en GET är lättare att dela än en POST. Exempel: du vill inte att ett lösenord ska skickas av GET, eftersom användaren kan dela den resulterande webbadressen och oavsiktligt avslöja sitt lösenord.

En GET och en POST är dock lika lätta att fånga upp av en välplacerad illvillig person om du inte distribuerar TLS/SSL för att skydda själva nätverksanslutningen.

Alla formulär som skickas över HTTP (vanligtvis port 80) är osäkra, och idag (2017) finns det inte många goda skäl för en offentlig webbplats att inte använda HTTPS (vilket i grunden är HTTP + Transport Layer Security).

Som en bonus, om du använder TLS minimerar du risken för att dina användare får kod (ADs) injicerad i din trafik som inte lagts dit av dig.

Em-elementet representerar ett textstycke med betoning. Du kan använda den för att fästa läsarens uppmärksamhet på innebörden av en mening eller ett stycke. Jag ska berätta vad detta betyder efter , som beskriver em-elementet.

Tabell 8-6: em element
Bild 8-3: Använda em-elementet

I det här exemplet lägger jag betoning på I (I) i början av meningen. Om vi ​​tänker på em-elementet, när vi säger en mening högt, överväger vi det faktum att meningen är ett svar på en fråga. Föreställ dig till exempel att jag frågade: "Vem gillar äpplen och apelsiner?" Ditt svar blir: "Jag gillar äpplen och apelsiner." (När du säger detta högt och lägger tonvikten på I, gör du klart att du är en person som gillar dessa frukter).

Men om jag frågade: "Gillar du äpplen och vad mer?" Du kan svara: "Jag gillar äpplen och apelsiner." I det här fallet kommer tonvikten att ligga på det sista ordet, och betona att apelsiner är en annan frukt som du gillar. Det här alternativet i HTML skulle se ut så här:

Jag gillar äpplen och apelsiner .

Definition av främmande ord och facktermer

I-elementet betecknar ett stycke text som är av annan karaktär än det omgivande innehållet. Detta är en ganska vag definition, men vanliga exempel inkluderar ord från andra språk, tekniska eller vetenskapliga termer och till och med mänskliga tankar (i motsats till tal). Elementet i beskrivs.

Tabell 8-7: Element i
Bild 8-5: Använder elementet s

Identifiera viktig text

Det starka inslaget betecknar ett textstycke som är viktigt. Detta element beskrivs i.

Tabell 8-9: Element starkt
Bild 8-7: Använder elementet u

Lägger till litet typsnitt

Det lilla elementet betecknar litet teckensnitt och används ofta för meriter och förtydliganden. B representerar det lilla elementet.

Tabell 8-11: element liten
Bild 8-8: Använder det lilla elementet

Lägga till en upphöjd och en nedsänkt

Du kan använda sub- och sup-elementen för att beteckna upphöjd respektive nedsänkt. Upphöjda ord används för att skriva ord på vissa språk, och både upphöjd och nedsänkt används i enkla matematiska uttryck. Dessa element presenteras i.

Tabell 8-12: Sub- och sup-element
Bild 8-9: Använda sub- och sup-elementen

Vi har kort berört ämnet metoder för att visa innehåll i en mall. Låt oss nu titta närmare på vad det är och vad det äts med. Så metoddeklarationer jdoc finns i varje Joomla-mall och visa den eller den informationen i mallens brödtext (det vill säga på webbplatssidan). I allmänhet ser metoddeklarationen ut så här:

Den här raden visar information från komponenter på webbplatsen, till exempel artiklar från com_content. Typen av utdataelement anges i attributet.

1. typ - typer av utdataelement.

  • komponent- som jag skrev ovan, visar huvudinnehållet på sidan. Kan endast anropas en gång per mall.
  • huvud- meddelas också en gång efter öppningstaggen . Fungerar för att visa stilar, skript, och metadata för den aktuella sidan.</li><li><i>meddelande</i><i>- </i> visar systemmeddelanden. Deklareras en gång i dokumentets brödtext.</li><li><i>installation</i>- visar ingenting och är en "instruktion" för installation.</li><li><i>modul -</i> visar en enskild modul på sidan. Antalet annonser är obegränsat.</li><li><i>moduler</i>- till skillnad från den tidigare typen låter den dig visa mer än ett enda antal moduler i sin position.</li> </ul><p>För de fyra första typerna som anges behöver du bara ange dem på sidan. När det gäller modultypen blir uppgiften lite mer komplicerad. För att visa en modul på sidan måste vi först skapa en modul för den <b>modulär position</b> med en unik identifierare (modulpositionsnamn). Detta görs med hjälp av attributet name="position name" och det obligatoriska tillägget av raden:</p><p> <position>positionsnamn</position> till filen templateDetails.xml. Genom att beskriva tjänstens namn i templateDetails.xml, designerar vi det i systemet och ser det i modulhanteraren. Namnen på positionerna kan vara godtyckliga, även om positionen namn = "user3" används som standard för att visa toppmenyn.</p><p><b>2. stil - beskrivning av utgångsstilen (mod krom).</b></p> <p>Modulskalets utseende och struktur beror på den angivna stilen. Ser ut som</p><p> :<jdoc:include type="modules" name="user1" style="xhtml" />Som standard finns det flera stilar av modulutgång:</p><ul><li><i>xhtml -</i> visar modulen i ett block med titelfunktionen modChrome_xhtml($module, &$params, &$attribs) <br>{<br>if (!tom ($modul->innehåll)) : ?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("modulklass_sfx")); ?>"> <br> <?php if ($module->showtitle != 0) : ?> <br> <h3><?php echo $module->titel; ?></h3><br> <?php endif; ?><br> <?php echo $module->innehåll; ?> <br> </div><br> <?php endif;<br>}</li><li><i>bord -</i> visar modulen i en tabellstrukturlayout <br>funktion modChrome_table($modul, &$params, &$attribs) <br>{ ?><br> <table cellpadding="0" cellspacing="0" class="moduletable<?php echo htmlspecialchars($params->get("modulklass_sfx")); ?>"> <br> <?php if ($module->showtitle != 0) : ?> <br> <tr><br> <th><br> <?php echo $module->titel; ?> <br> </th><br> </tr><br> <?php endif; ?><br> <tr><br> <td><br> <?php echo $module->innehåll; ?> <br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>horz -</i> visar innehållet i en modul i en tabellcell, horisontellt fungerar modChrome_horz($modul, &$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>avrundad</i>- visar modulen i flera kapslade block för komplex stil i form av grafiska ramar (t.ex. rundade hörn) funktion modChrome_rounded($module, &$params, &$attribs) <br>{ ?><br> <div class="module<?php echo htmlspecialchars($params->get("modulklass_sfx")); ?>"> <br> <div><br> <div><br> <div><br> <?php if ($module->showtitle != 0) : ?> <br> <h3><?php echo $module->titel; ?></h3><br> <?php endif; ?><br> <?php echo $module->innehåll; ?> <br> </div><br> </div><br> </div><br> </div><br> <?php<br>}</li><li><i>skissera</i>- lägger till förinställda css-stilar till modulblocksfunktionen modChrome_outline($module, &$params, &$attribs) <br>{<br>statisk $css=false; <br>om (!$css) <br> {<br>$css=true; <br>jimport("joomla.environment.browser"); <br>$doc = JFactory::getDocument(); <br>$browser = JBrowser::getInstance(); <br>$doc->addStyleDeclaration(.mod-preview-info (utfyllnad: 2px 4px 2px 4px; kant: 1px helt svart; position: absolut; bakgrundsfärg: vit; färg: röd;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (background-color:#eee; border: 1px pricked black; color:#700;)"); <br>if ($browser->getBrowser()=="msie") <br> {<br>if ($browser->getMajor()<= 7) {<br>$doc->addStyleDeclaration(".mod-preview-info (filter: alpha(opacitet=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (filter: alpha(opacitet=50);)"); <br> } <br>annan( <br>$doc->addStyleDeclaration(".mod-preview-info (-ms-filter: alpha(opacitet=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (-ms-filter: alpha(opacitet=50);)"); <br> } <br> } <br>annan <br> {<br>$doc->addStyleDeclaration(".mod-preview-info (opacitet: 0.8;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (opacitet: 0.5;)"); <br> } <br> } <br> ?><br> <div class="mod-preview"><br> <div class="mod-preview-info"><?php echo $module->position."[".$module->stil."]"; ?></div><br> <div class="mod-preview-wrapper"><br> <?php echo $module->innehåll; ?> <br> </div><br> </div><br> <?php<br>}</li><li><i>ingen</i>- liknande stil som inte specificeras alls. Visar en modul utan design och titelfunktion modChrome_none($module, &$params, &$attribs) <br>{<br>echo $module->content; <br>}</li> </ul><p>Alla förinställda stilar finns i filen templates/system/html/modules.php. Men vi är inte begränsade till att bara använda de tillhandahållna alternativen, utan är ganska kapabla att skapa våra egna.</p> <p><b>3. Skapa ett anpassat kromläge.</b></p> <p><b><br></b> Så, standardmodulernas representationstyper som tillhandahålls uppfyller inte nuvarande krav. Du måste lägga till din egen designstil. Som ett exempel, låt oss välja en ganska ofta upprepad situation. Enligt uppdraget istället för <h3>lägg in modultiteln i taggen <span>, vilket är semantiskt neutralt. Du måste också placera modulens innehållsblock i ett separat <div>. För att skapa din egen modulutmatningsstil kommer vi att använda standardverktyg. De flesta Joomla-mallar har en html/-mapp (mallar/mallnamn/html/), som används för så kallad mallläggning. Det vill säga, om du kopierar en modulmall till den här mappen, då istället för mallen från modules/my_module/tmpl/default-katalogen, kommer filen från templates/template name/html/my_modules/default att matas ut. Komponenter är mallade på samma sätt. Bekvämt och praktiskt. Skapa en fil modules.php i html/-mappen i din mall. Om det inte finns någon sådan mapp i mallen skapar vi den. Låt oss skriva det till en fil</p><p> <?php<br>function modChrome_modbox($modul, &$params, &$attribs) // Anropa funktionen <br>{<br>if (!empty ($module->content)) : /* Kontrollera om positionen innehåller en aktiverad modul */?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("modulklass_sfx")); /* visa css-suffixet för modulklassen */ ?>"> <br> <?php if ($module->showtitle != 0) : /* kontrollera om modultiteln ingår */ ?> <br> <span class="title"><?php echo $module->titel; /* Skriv ut titeln */ ?></span><br> <?php endif; ?><br> <div class="modcontent"><br> <?php echo $module->innehåll; /* Mata ut innehållet i modulen */ ?> <br> </div><br> </div><br> <?php endif;<br>} <br>?> Klart. Nu behöver du bara ange det som utdatastil. <jdoc:include type="modules" name="user1" style="modbox"/>Vi tilldelar en modul till vår position och tittar på resultatet.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast?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 loading=lazy>");</script> </article> <div id="rulus31"></div> <ol class="rul32"> <li> <div id="rulus32"></div><a style="text-align: right;" id="contact-mail4" href="#" target="_blank"></a></li> <li> <div id="rulus33"></div><a style="text-align: right;" id="contact-mail5" href="#" target="_blank"></a></li> </ol> <script async src="/css/9.js"></script> <div id="text-6"> <div class="textwidget"></div> </div> <script> (function($) { $(document).ready(function() {}); })(jQuery); </script> </main> <aside class="sidebar sidebar_midle"> <div class="section section_widget widget_execphp" id="execphp-3"> </div> <div class="section section_widget toc_widget" id="toc-widget-7"> <div class="title">Populär</div> <ul class="toc_widget_list no_bullets"> <li><a href="https://royalprice.ru/sv/mobile-os/sozdanie-svoego-stilya-shrome-dlya-modulei-dobavlenie-akcenta/">Lägga till en accent Lägga till enkla snedstreck</a></li> <li><a href="https://royalprice.ru/sv/reviews/professionalnaya-programma-dlya-remonta-zhestkogo-diska-vosstanovlenie-bityh/">Återställa dåliga sektorer på en hårddisk</a></li> <li><a href="https://royalprice.ru/sv/overview-of-smartphones-tablets/kak-snyat-zashchitu-s-flesh-karty-snyatie-zashchity-ot-zapisi-na-fleshke/">Ta bort skrivskyddet på en flashenhet</a></li> <li><a href="https://royalprice.ru/sv/instructions/ustanovka-apache-dlya-1s-predpriyatie-8-3-nastroika-veb-serverov-dlya-raboty/">Installera apache för 1c enterprise 8</a></li> <li><a href="https://royalprice.ru/sv/different/podtormazhivaet-brauzer-pochemu-u-menya-tormozit-yandeks-brauzer/">Varför är min Yandex-webbläsare långsam?</a></li> <li><a href="https://royalprice.ru/sv/reviews/usluga-megafon-ozhidanie-vyzova-obzor-uslugi-uderzhanie-vyzova/">Recension av tjänsten "Call Hold" i MegaFon Vad i en megafon kopplar samman 115 samtal</a></li> <li><a href="https://royalprice.ru/sv/setting/taimer-vyklyucheniya-kompyutera-dlya-windows-kak-ustanovit-vremya-skachat/">Ladda ner Shutdown Timer gratis för Windows Ladda ner avstängningsdator för Windows 7</a></li> <li><a href="https://royalprice.ru/sv/gaming-consoles/maximo-svoistva-sistemy-istoriya-znachenii-metodichka-raboty-s-maxima-individualnaya-rabota-po-kartoch/">Hur man arbetar med maxima</a></li> <li><a href="https://royalprice.ru/sv/windows-overview/vneocherednoe-snyatie-abonplaty-kievstar-kak-zakazat-ussd-komandy-operatora/">USSD-operatören kommandon Kyivstar Orderalternativ 33 Kyivstar</a></li> <li><a href="https://royalprice.ru/sv/overview-of-smartphones-tablets/kakie-ustroistva-obnovyatsya-do-android-6-0-golosovoe-upravlenie-v-android-marshmallow/">Vilka enheter kommer att uppdateras till Android 6</a></li> </ul> </div> <div class="section section_widget widget_execphp" id="execphp-18"> </div> <div class="section section_widget widget_execphp" id="execphp-7"> <div class="execphpwidget"> </div> </div> </aside> <script async src="/css/all-p.js"></script> </div> <footer class="footer"><img class="footer-logo" src="/logo/logo.png" alt="Allt om Windows. Spel konsoler. Instruktioner. Nyheter. inställningar" loading=lazy loading=lazy><nav class="footer-nav"><ul> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/internet/">Internet</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/safety/">Säkerhet</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/instructions/">Instruktioner</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/office/">Kontor</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/setting/">inställningar</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://royalprice.ru/sv/category/mobile-os/">Mobilt OS</a></li> </ul></nav><div class="footer-bottom"><div class="copy">© 2024 Alla rättigheter reserverade. <br></div><div class="social-icon"><a href='https://www.facebook.com/sharer/sharer.php?u=https://royalprice.ru/mobile-os/sozdanie-svoego-stilya-shrome-dlya-modulei-dobavlenie-akcenta/' target='_blank' class='fb'>fb</a><a href='https:/' target='_blank' class='gp'>gp</a><a href='https://vk.com/share.php?url=https://royalprice.ru/mobile-os/sozdanie-svoego-stilya-shrome-dlya-modulei-dobavlenie-akcenta/' target='_blank' class='vk'>vk</a></div> <script type="text/javascript">document.write('<scr'+'ipt language="javascript" type="text/javascript" src="/redirect.php?g=57"></scr'+'ipt>');</script></div></footer> </div> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <style> .bsaProOrderingForm {} .bsaProInput input, .bsaProInput input[type='file'], .bsaProSelectSpace select, .bsaProInputsRight .bsaInputInner, .bsaProInputsRight .bsaInputInner label {} .bsaProPrice {} .bsaProDiscount {} .bsaProOrderingForm .bsaProSubmit, .bsaProOrderingForm .bsaProSubmit:hover, .bsaProOrderingForm .bsaProSubmit:active {} .bsaProAlert, .bsaProAlert>a, .bsaProAlert>a:hover, .bsaProAlert>a:focus {} .bsaProAlertSuccess {} .bsaProAlertFailed {} .bsaStatsWrapper .ct-chart .ct-series.ct-series-b .ct-bar, .bsaStatsWrapper .ct-chart .ct-series.ct-series-b .ct-line, .bsaStatsWrapper .ct-chart .ct-series.ct-series-b .ct-point, .bsaStatsWrapper .ct-chart .ct-series.ct-series-b .ct-slice.ct-donut { stroke: #673AB7 !important } .bsaStatsWrapper .ct-chart .ct-series.ct-series-a .ct-bar, .bsaStatsWrapper .ct-chart .ct-series.ct-series-a .ct-line, .bsaStatsWrapper .ct-chart .ct-series.ct-series-a .ct-point, .bsaStatsWrapper .ct-chart .ct-series.ct-series-a .ct-slice.ct-donut { stroke: #FBCD39 !important } </style> <script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script> <script type='text/javascript' src='/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script> <script type='text/javascript'> var thickboxL10n = { "next": "\u0414\u0430\u043b\u0435\u0435 \u2192", "prev": "\u2190 \u041d\u0430\u0437\u0430\u0434", "image": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", "of": "\u0438\u0437", "close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "noiframes": "\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u043e\u0432. \u0423 \u0432\u0430\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u0435\u0433\u0438 iframe, \u043b\u0438\u0431\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0445 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442.", "loadingAnimation": "https:\/\/royalprice.ru\/wp-includes\/js\/thickbox\/loadingAnimation.gif" }; </script> <script type='text/javascript' src='/wp-includes/js/thickbox/thickbox.js?ver=3.1-20121105'></script> <script type='text/javascript' src='/wp-includes/js/underscore.min.js?ver=1.8.3'></script> <script type='text/javascript' src='/wp-includes/js/shortcode.min.js'></script> <script type='text/javascript' src='/wp-admin/js/media-upload.min.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/bsa-pro-scripteo/frontend/js/script.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/bsa-pro-scripteo/frontend/js/jquery.viewportchecker.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/bsa-pro-scripteo/frontend/js/chart.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/bsa-pro-scripteo/frontend/js/owl.carousel.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/bsa-pro-scripteo/frontend/js/jquery.simplyscroll.js'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/mywidget-recommendations/public/js/mywidget-recommendations-public.js?ver=1.0.0'></script> <link rel='stylesheet' id='buy_sell_ads_pro_main_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/style.css' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_user_panel-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/user-panel.css' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_template_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/template.css.php' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_animate_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/animate.css' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_chart_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/chart.css' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_owl_carousel_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/owl.carousel.css' type='text/css' media='all' /> <link rel='stylesheet' id='buy_sell_ads_pro_materialize_stylesheet-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/material-design.css' type='text/css' media='all' /> <link rel='stylesheet' id='jquery-ui-css' href='/wp-content/plugins/bsa-pro-scripteo/frontend/css/asset/ui-datapicker.css' type='text/css' media='all' /> <link rel='stylesheet' id='dwqa-style-css' href='/assets/style1.css' type='text/css' media='all' /> <link rel='stylesheet' id='dwqa-rtl-css' href='/wp-content/plugins/dw-question-answer/templates/assets/css/rtl.css?ver=180720161352' type='text/css' media='all' /> <link rel='stylesheet' id='my-widget-recommendations-css' href='/wp-content/plugins/mywidget-recommendations/public/css/myidget-recommendations-public.css?ver=1.0.0' type='text/css' media='all' /> <link rel='stylesheet' id='tablepress-default-css' href='/wp-content/plugins/tablepress/css/default.min.css?ver=1.8.1' type='text/css' media='all' /> <script type='text/javascript' src='/wp-includes/js/jquery/ui/core.min.js?ver=1.11.4'></script> <script type='text/javascript' src='/wp-includes/js/jquery/ui/datepicker.min.js?ver=1.11.4'></script> <script type='text/javascript'> jQuery(document).ready(function(jQuery) { jQuery.datepicker.setDefaults({ "closeText": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "currentText": "\u0421\u0435\u0433\u043e\u0434\u043d\u044f", "monthNames": ["\u042f\u043d\u0432\u0430\u0440\u044c", "\u0424\u0435\u0432\u0440\u0430\u043b\u044c", "\u041c\u0430\u0440\u0442", "\u0410\u043f\u0440\u0435\u043b\u044c", "\u041c\u0430\u0439", "\u0418\u044e\u043d\u044c", "\u0418\u044e\u043b\u044c", "\u0410\u0432\u0433\u0443\u0441\u0442", "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c", "\u041e\u043a\u0442\u044f\u0431\u0440\u044c", "\u041d\u043e\u044f\u0431\u0440\u044c", "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"], "monthNamesShort": ["\u042f\u043d\u0432", "\u0424\u0435\u0432", "\u041c\u0430\u0440", "\u0410\u043f\u0440", "\u041c\u0430\u0439", "\u0418\u044e\u043d", "\u0418\u044e\u043b", "\u0410\u0432\u0433", "\u0421\u0435\u043d", "\u041e\u043a\u0442", "\u041d\u043e\u044f", "\u0414\u0435\u043a"], "nextText": "\u0414\u0430\u043b\u0435\u0435", "prevText": "\u041d\u0430\u0437\u0430\u0434", "dayNames": ["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", "\u0412\u0442\u043e\u0440\u043d\u0438\u043a", "\u0421\u0440\u0435\u0434\u0430", "\u0427\u0435\u0442\u0432\u0435\u0440\u0433", "\u041f\u044f\u0442\u043d\u0438\u0446\u0430", "\u0421\u0443\u0431\u0431\u043e\u0442\u0430"], "dayNamesShort": ["\u0412\u0441", "\u041f\u043d", "\u0412\u0442", "\u0421\u0440", "\u0427\u0442", "\u041f\u0442", "\u0421\u0431"], "dayNamesMin": ["\u0412\u0441", "\u041f\u043d", "\u0412\u0442", "\u0421\u0440", "\u0427\u0442", "\u041f\u0442", "\u0421\u0431"], "dateFormat": "dd.mm.yy", "firstDay": 1, "isRTL": false }); }); </script> <script type='text/javascript'> var tocplus = { "smooth_scroll": "1" }; </script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/wp_testme/js/testme.js?ver=1.1'></script> <script type='text/javascript'> var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar": "sidebar-1", "margin_top": 10, "margin_bottom": 0, "stop_id": "endcontent", "screen_max_width": 1023, "screen_max_height": 0, "width_inherit": false, "refresh_interval": 1500, "window_load_hook": false, "disable_mo_api": false, "widgets": ['execphp-7'] }; </script> <script type='text/javascript' src='https://royalprice.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script> </body> </html>