.. | ||
format-strings-template.md | ||
README.md |
Formaat Strings
Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
- Werk jy in 'n cybersekuriteitsmaatskappy? Wil jy jou maatskappy geadverteer sien in HackTricks? of wil jy toegang hê tot die nuutste weergawe van die PEASS of laai HackTricks in PDF af? Kyk na die INSKRYWINGSPLANNE!
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Kry die amptelike PEASS & HackTricks swag
- Sluit aan by die 💬 Discord groep of die telegram groep of volg my op Twitter 🐦@carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die hacktricks repo en hacktricks-cloud repo.
Basiese Inligting
In C is printf
'n funksie wat gebruik kan word om 'n string af te druk. Die eerste parameter wat hierdie funksie verwag, is die rou teks met die formateerders. Die volgende parameters wat verwag word, is die waardes om die formateerders van die rou teks te vervang.
Die kwesbaarheid verskyn wanneer 'n aanvallersteks as die eerste argument aan hierdie funksie voorsien word. Die aanvaller sal in staat wees om 'n spesiale inset te skep wat die printf-formaatstring-vermoëns misbruik om enige data in enige adres te skryf. Deur dit op hierdie manier te doen, kan hulle willekeurige kode uitvoer.
Formateerders:
%08x —> 8 hex bytes
%d —> Entire
%u —> Unsigned
%s —> String
%n —> Number of written bytes
%hn —> Occupies 2 bytes instead of 4
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
%n
skryf die aantal geskryfde bytes in die aangeduide adres. Om enige data te skryf, skryf soveel bytes as die heksadesimale nommer wat ons moet skryf.
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
Uitbuitingsvloei
Soos voorheen verduidelik, maak hierdie kwesbaarheid dit moontlik om enigiets in enige adres te skryf (arbitrêre skryf).
Die doel sal wees om die adres van 'n funksie in die GOT-tabel te oorskryf wat later geroep sal word. Ideaal gesproke kan ons die adres instel op 'n shell-kode wat in 'n uitvoerbare gedeelte geleë is, maar dit is baie waarskynlik dat jy nie 'n shell-kode in 'n uitvoerbare gedeelte kan skryf nie.
Dus 'n ander opsie is om 'n funksie te oorskryf wat sy argumente van die gebruiker ontvang en dit te rig na die system
-funksie.
Om die adres te skryf, word gewoonlik 2 stappe gedoen: Jy skryf eers 2 grepe van die adres en dan die ander 2. Om dit te doen word $hn
gebruik.
HOB word geroep vir die 2 hoër grepe van die adres
LOB word geroep vir die 2 laer grepe van die adres
Dus, as gevolg van hoe die formaatstring werk, moet jy eerstens die kleinste van [HOB, LOB] skryf en dan die ander een.
As HOB < LOB
[adres+2][adres]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]
As HOB > LOB
[adres+2][adres]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]
HOB LOB HOB_shell-kode-8 NºParam_dir_HOB LOB_shell-HOB_shell NºParam_dir_LOB
`python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'`
Pwntools-sjabloon
Jy kan 'n sjabloon vind om 'n uitbuiting vir hierdie soort kwesbaarheid voor te berei in:
{% content-ref url="format-strings-template.md" %} format-strings-template.md {% endcontent-ref %}
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
- Werk jy in 'n cybersekuriteitsmaatskappy? Wil jy jou maatskappy geadverteer sien in HackTricks? of wil jy toegang hê tot die nuutste weergawe van die PEASS of HackTricks aflaai in PDF-formaat? Kyk na die INSKRYWINGSPLANNE!
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Kry die amptelike PEASS & HackTricks-klere
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg my op Twitter 🐦@carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die hacktricks-opslag en hacktricks-cloud-opslag.