MS Access SQL Injection
Uwanja wa Kucheza Mtandaoni
Vizuizi vya DB
Uunganishaji wa Maneno ya String
Uunganishaji wa maneno ya string unawezekana kwa kutumia herufi & (%26)
na + (%2b)
.
Maoni
Hakuna maoni katika MS Access, lakini inaonekana niwezekana kuondoa sehemu ya mwisho ya swali na NULL char:
Ikiwa hii haifanyi kazi, unaweza daima kurekebisha muundo wa swali:
Maswali Yaliyopangwa
Hayasaidiwi.
KIKOMBE
Msimamizi wa KIKOMBE
haujatekelezwa. Walakini, inawezekana kikomo matokeo ya swali la SELECT kwa safu za kwanza N kwa kutumia operator TOP
. TOP
inakubali kama hoja nambari ya kiasi cha safu zitakazorudishwa.
Kama vile TOP, unaweza kutumia LAST
ambayo itapata safu kutoka mwisho.
Maswali ya UNION/Sub queries
Katika SQLi, kawaida utataka kwa namna fulani kutekeleza swali jipya ili kutoa habari kutoka kwenye meza nyingine. MS Access daima inahitaji kwamba katika subqueries au maswali ya ziada, FROM
ionyeshwe.
Kwa hivyo, ikiwa unataka kutekeleza UNION SELECT
au UNION ALL SELECT
au SELECT
kati ya mabano katika hali fulani, daima unahitaji kuonyesha FROM
na jina sahihi la meza.
Kwa hiyo, unahitaji kujua jina sahihi la meza.
Kufunga sawa + Kipande
Hii itakuruhusu kuchukua thamani za meza ya sasa bila kuhitaji kujua jina la meza.
MS Access inaruhusu muundo wa sintaksia kama vile '1'=2='3'='asd'=false
. Kama kawaida, SQL injection itakuwa ndani ya kifungu cha WHERE
tunaweza kutumia hilo.
Fikiria una SQLi katika database ya MS Access na unajua (au umegundua) kuwa jina moja la safu ni username, na hiyo ndiyo uwanja unataka kuchukua. Unaweza kuchunguza majibu tofauti ya programu ya wavuti wakati mbinu ya kufunga sawa inapotumiwa na kuchukua maudhui kwa kutumia boolean injection kwa kutumia kazi ya Mid
kupata vipande.
Ikiwa unajua jina la meza na kolumu ya kudump, unaweza kutumia mchanganyiko wa Mid
, LAST
, na TOP
ku vuja habari zote kupitia boolean SQLi:
Jisikie huru kuangalia hii katika uwanja wa michezo mtandaoni.
Kuvunja nguvu majina ya Meza
Kwa kutumia mbinu ya kufunga sawa, unaweza pia kuvunja nguvu majina ya meza na kitu kama hiki:
Unaweza pia kutumia njia ya kawaida zaidi:
Jisikie huru kuangalia hii katika uwanja wa michezo mtandaoni.
Majina ya meza ya kawaida ya Sqlmap: https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt
Kuna orodha nyingine katika http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html
Kuvunja nguvu majina ya safu
Unaweza kuvunja nguvu majina ya safu za sasa kwa kutumia mbinu ya kufanana na alama ya usawa na:
Au kwa kutumia group by:
Au unaweza kuvunja nguvu majina ya safu ya meza tofauti na:
Kudondosha data
Tayari tumeshajadili njia ya kufunga sawa kudondosha data kutoka kwenye meza ya sasa na meza nyingine. Lakini kuna njia nyingine:
Kwa ufupi, swali linatumia kauli ya "kama-basi" ili kuzindua "200 OK" kwa mafanikio au "500 Internal Error" vinginevyo. Kwa kutumia operator TOP 10, inawezekana kuchagua matokeo kumi ya kwanza. Matumizi ya LAST yanaruhusu kuzingatia tu tuple ya 10. Kwa kutumia operator MID kwenye thamani hiyo, inawezekana kufanya ulinganisho rahisi wa herufi. Kwa kubadilisha kwa usahihi index ya MID na TOP, tunaweza kudump maudhui ya uga wa "jina la mtumiaji" kwa safu zote.
Kulingana na Wakati
Kazi Nyingine za Kuvutia
Mid('admin',1,1)
pata kipande cha herufi kutoka nafasi 1 urefu wa 1 (nafasi ya kwanza ni 1)LEN('1234')
pata urefu wa herufiASC('A')
pata thamani ya ASCII ya herufiCHR(65)
pata herufi kutoka thamani ya ASCIIIIF(1=1,'a','b')
kama basiCOUNT(*)
Hesabu idadi ya vitu
Kuchunguza Meza
Kutoka hapa unaweza kuona swali la kupata majina ya meza:
Hata hivyo, ni kawaida sana kupata SQL Injections ambapo huna ufikiaji wa kusoma meza MSysObjects
.
Upatikanaji wa Mfumo wa Faili
Njia Kamili ya Mizizi ya Diri ya Wavuti
Ujuzi wa njia kamili ya mizizi ya diri ya wavuti unaweza kuwezesha mashambulizi zaidi. Ikiwa makosa ya programu hayajafichwa kabisa, njia ya diri inaweza kufunuliwa kwa kujaribu kuchagua data kutoka kwenye database isiyopo.
http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00
MS Access inajibu na ujumbe wa makosa unaotaja njia kamili ya mizizi ya diri ya wavuti.
Uthibitishaji wa Faili
Vector ya shambulio ifuatayo inaweza kutumika ku kutambua uwepo wa faili kwenye mfumo wa faili wa mbali. Ikiwa faili iliyotajwa ipo, MS Access inasababisha ujumbe wa makosa unaoinforma kuwa muundo wa database ni batili:
http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00
Njia nyingine ya kutambaza faili ni kwa kutaja kipengee cha database.table. Ikiwa faili iliyotajwa ipo, MS Access inaonyesha ujumbe wa makosa wa muundo wa database.
http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00
Kudhani Jina la Faili la .mdb
Jina la faili la database (.mdb) linaweza kutambuliwa kwa kujaribu swali lifuatalo:
http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00
Ambapo name[i] ni jina la faili la .mdb na realTable ni meza iliyopo ndani ya database. Ingawa MS Access daima itasababisha ujumbe wa makosa, inawezekana kutofautisha kati ya jina batili la faili na jina halali la faili la .mdb.
Kuvunja Nenosiri la .mdb
Access PassView ni chombo cha bure kinachoweza kutumika kurejesha nenosiri kuu la database ya Microsoft Access 95/97/2000/XP au Jet Database Engine 3.0/4.0.
Marejeo
Last updated