xp_cmdshell: Külső Shell parancs futtatása
Az sa jelszó birtokában gyakorlatilag bármit megtehetünk, nem csak az adatbázison belül, hanem azon kívül is. Az xp_cmdshell tárolt eljárással bármilyen shell (DOS) parancsot futtathatunk, akár állományokat is törölhetünk. Természetesen ezt sem károkozásra találták ki, hanem egyéb hasznos műveletekre, amelyeket az adatbázison belül nem tudunk elvégezni. A tárolt eljárás ugyanis a futtatott parancs outputját egy eredménytáblában teszi elérhetővé. A példában lekérdezzük a C: meghajtó alkönyvtárainak nevét, és ezek nevét kapjuk vissza eredményül.
Az xp_cmdshell tárolt eljárás szintaxisa a következő:
xp_cmdshell {'command_string'} [, no_output]
Az első paraméter a futtatandó parancs az összes paraméterével együtt, sztringként megadva. Ha a parancsnak nincs output-ja, akkor ezt a no_output paraméter megadásával jelezhetjük. Ebben az esetben a tárolt eljárás nem ad vissza eredménylistát.
exec Master..xp_cmdshell 'dir /b /ong /ad C:\*.*';
Az eljárás visszatérési értéke 0 ha sikeres volt, és 1 ha nem.
xp_enumgroups.sql: Windows NT felhasználói csoportok listázása
Ha Windows NT-n dolgozunk, akkor lehetőség van az adott tartományban szereplő felhasználó csoportok nevének, és leírásának lekérdezésére. Erre az xp_enumgroups tárolt eljárást használhatjuk. Az eljárás egy két oszlopból álló eredménylistát ad vissza, amelynek első oszlopában a csoport neve (group), a másodikban pedig a csoport leírása (comment) található.
Az xp_enumgroups tárolt eljárás szintaxisa a következő:
xp_enumgroups ['domain_name']
A domain_name paraméterben adhatjuk meg a Windows NT tartomány nevét. Ha nem adjuk meg, akkor a helyi csoportokat listázza.
Az eljárás visszatérési értéke 0 ha sikeres volt, és 1 ha nem.
xp_msver.sql: MS SQL szerver verzió információinak lekérdezése
Az xp_msver tárolt eljárással lehetőségünk van az MS SQL Server verzió információinak lekérdezésére. A konkrét verzió információkon kívül egyéb környezeti információkat is visszaad, mint például a processzorok száma, vagy a memória mérete.
Az eljárás szintaxisa a következőképpen néz ki:
Az optname paraméterben megadhatjuk a lekérdezni kívánt információ nevét. Ha ezt elhagyjuk, akkor az összes lehetséges információ lekérdezésre kerül.
Az eredménylista négy oszlopból áll, ezek sorban:
- Index: az információ sorszáma;
- Name: az információ neve (ezt adhatjuk meg az eljárás paramétereként);
- Internal_value: belső használatra vonatkozó érték (nem minden tulajdonságnál van);
- Character_value: karakteres érték (könnyebb érthetőség).
Az eredménylistában az alábbi információk szerepelhetnek:
| Tulajdonság neve |
Leírás |
| ProductName |
A termék neve (Microsoft SQL Server). |
| ProductVersion |
A termék verziószáma (pl.7.00.419, ahol a 7 a verziószám, a 419 pedig a build szám) |
| Language |
A termék nyelve (kóddal és szöveggel egyaránt megadja). |
| Platform |
Az operációs rendszer neve, a processzor gyártójának neve és a processzor típusa, amelyen az SQL Server fut. Például az „NT INTEL X86” a Windows NT operációs rendszerre utal, amely egy Intel processzoros számítógépen fut. |
| Comments |
Vegyes információk az SQL szerverről. |
| CompanyName |
Az SQL szerver gyártójának neve. |
| FileDescription |
Az operációs rendszer. |
| FileVersion |
Az SQL Server futtatható fájljának verziószáma. |
| InternalName |
A Microsoft által belsőleg használt neve a terméknek (pl. SQLSERVR). |
| LegalCopyright |
A szerzői jogokkal kapcsolatos információk. |
| LegalTrademarks |
A bejegyzett védjegyekkel kapcsolatos információk. |
| OriginalFilename |
Az SQL Server futtatható fájljának neve (Sqlservr.exe). |
| PrivateBuild |
Jelenleg nincs használva. |
| SpecialBuild |
Jelenleg nincs használva. |
| WindowsVersion |
Az SQL Server-t futtató számítógép operációs rendszerének verziószáma (Windows NT). |
| ProcessorCount |
A szervert futtató számítógép processzorainak száma. |
| ProcessorActiveMask |
Egy bitmaszkot ad meg, ami azt mutatja, hogy mely processzorok vannak aktiválva, illetve melyek használhatók a Windows NT által. |
| ProcessorType |
A processzor típusa (a Platform tulajdonsághoz hasonló). |
| PhysicalMemory |
A fizikai memória mérete megabájtban. |
| Product ID |
A termék egyedi azonosító kódja (PID). |