5.5 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
PostgreSQL Groot Voorwerpe
PostgreSQL bied 'n struktuur bekend as groot voorwerpe, toeganklik via die pg_largeobject
tabel, ontwerp om groot datatipe, soos beelde of PDF-dokumente, te stoor. Hierdie benadering is voordelig bo die COPY TO
funksie aangesien dit die uitvoer van data terug na die lêerstelsel moontlik maak, wat verseker dat 'n presiese replika van die oorspronklike lêer gehandhaaf word.
Om 'n volledige lêer binne hierdie tabel te stoor, moet 'n voorwerp in die pg_largeobject
tabel geskep word (geïdentifiseer deur 'n LOID), gevolg deur die invoeging van datastukke, elk 2KB in grootte, in hierdie voorwerp. Dit is van kardinale belang dat hierdie stukke presies 2KB in grootte is (met die moontlike uitsondering van die laaste stuk) om te verseker dat die uitvoerfunksie korrek werk.
Om jou binaire data in 2KB stukke te verdeel, kan die volgende opdragte uitgevoer word:
split -b 2048 your_file # Creates 2KB sized files
Vir die kodering van elke lêer in Base64 of Hex, kan die onderstaande opdragte gebruik word:
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
Belangrik: Wanneer jy hierdie proses outomatiseer, verseker dat jy stukke van 2KB van duidelike teks bytes stuur. Hex-gecodeerde lêers sal 4KB data per stuk vereis weens die verdubbeling in grootte, terwyl Base64-gecodeerde lêers die formule ceil(n / 3) * 4
volg.
Die inhoud van die groot voorwerpe kan vir foutopsporing doeleindes besigtig word met:
select loid, pageno, encode(data, 'escape') from pg_largeobject;
Using lo_creat
& Base64
Om binêre data te stoor, word 'n LOID eers geskep:
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
In situasies wat presiese beheer vereis, soos om 'n Blind SQL Injection te benut, word lo_create
verkies om 'n vaste LOID te spesifiseer.
Data stukke kan dan soos volg ingevoeg word:
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'));
Om die groot objek na gebruik te eksporteer en moontlik te verwyder:
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
Gebruik van lo_import
& Hex
Die lo_import
funksie kan gebruik word om 'n LOID vir 'n groot objek te skep en te spesifiseer:
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
Na die skep van die objek, word data per bladsy ingevoeg, wat verseker dat elke stuk nie 2KB oorskry nie:
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;
Om die proses te voltooi, word die data uitgevoer en die groot objek verwyder:
select lo_export(173454, '/path/to/your_file');
select lo_unlink(173454); -- Deletes the specified large object
Beperkings
Dit word opgemerk dat groot voorwerpe dalk ACL's (Toegangsbeheerlys) het, wat toegang kan beperk selfs tot voorwerpe wat deur jou gebruiker geskep is. egter, ouer voorwerpe met toegeeflike ACL's mag steeds toeganklik wees vir inhoudsuitvoer.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.