Wątek przeniesiony 2015-11-06 15:37 z Hardware/Software przez Shalom.

Przeciążenie bufora.

Odpowiedz Nowy wątek
2015-11-06 15:22

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

0

Witam.
Mam kilka pytań. W celach edukacyjnych w domowym "laboratorium" chce zrobić atak przepełnienia bufora pewnej usługi. Mianowicie:

  1. Jak obliczyć rozmiar bufora?
  2. Ile wysłać danych aby dotrzeć to rejestru EIP?
    Z góry dzięki!

Pozostało 580 znaków

2015-11-06 15:27
Moderator

Rejestracja: 16 lat temu

Ostatnio: 1 godzina temu

0

Jeśli nie masz binarki tej usługi to guzik zrobisz bo to tak jakbyś po pijaku nawlekał nitkę na igłę ;] A jeśli masz binarkę to zacznij od jej dekompilacji za pomocą Hoppera albo IDA Hexrays (jeśli cie stać).
Poza tym nie ma czegoś takiego jak Ile wysłać danych aby dotrzeć to rejestru EIP?. Dane są na stosie a rejestry są w procesorze. Jedno z drugim nie ma nic wspólnego. Żeby przesunąć instruction pointer na bufor który zapełniłeś (bo zakładam ze o to pytasz?) musiałyś nadpisać adres powrotu z funkcji (i liczyc na to że nie ma kanarków albo jakiegos stack guarda). Żeby wiedzieć "ile bajtów" musiałbyś wiedzieć jak wygląda stos w tej funkcji więc znów dekompilacja.
Chyba że jest tam jakieś string format vuln i możesz sobie wpisywać dane pod wybranymi adresami, wtedy też coś można oszacować.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 3x, ostatnio: Shalom, 2015-11-06 15:31
A tam od razu hexrays. Disasembler starczy. Za Moich Czasów sie czytało asemblera a nie hexraysowy pseudokod :P. - msm 2015-11-06 15:30
xxd > all - Rev 2015-11-06 15:31
@MSM to jest ten koleś: Błąd kompilacji programu. który nie umiał skompilować programu w javie a ty mu mówisz o czytaniu asemblera :D - Shalom 2015-11-06 15:32
Ale poważnie, offsety sie lepiej/pewniej liczy z asemblera niż pseudokodu (bo trzeba ramkę stosu poznać) :P. - msm 2015-11-06 15:37

Pozostało 580 znaków

Rev
2015-11-06 15:32
Rev
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 tydzień temu

0

Bez information leaka będzie ciężko. Nawet jeżeli zbrutowałbyś rozmiar bufora to nie wiesz gdzie skoczyć.


Pozostało 580 znaków

2015-11-06 15:43

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

0

@Shalom
Mam plik exe tej usługi i debugger.

Pozostało 580 znaków

Rev
2015-11-06 15:47
Rev
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 tydzień temu

0

No to musisz zanalizować dokładnie funkcję którą chcesz zaatakować, dobrać sposób ataku do tego w jaki sposób zabezpieczona jest binarka i ta konkretna funkcja, co tam innego w pamięci może być jak już uda się nadpisać adres powrotu żeby dalej jechać z ROP-em i tak dalej i tak dalej.

Dość obszerny writeup z podobnego zadania (buffer overflow/stack guard/ROP) masz w moim i MSMa artykule w obecnym Programiście - znajdziesz w prawie każdym Empiku).

ps. jak zrobisz to i ładnie opiszesz to możemy cię wziąć na testy do naszego teamu :P.


edytowany 2x, ostatnio: Rev, 2015-11-06 15:50
@Rev nie kuś go, odsyłam jeszcze raz tutaj: Błąd kompilacji programu. trochę mu jeszcze brakuje żeby dołączyć do @p4 :P - Shalom 2015-11-06 16:23

Pozostało 580 znaków

2015-11-06 17:36

Rejestracja: 4 lata temu

Ostatnio: 3 lata temu

0

A czy jest możliwe żeby przepełnić bufor serwera WWW np. Apache?

Pozostało 580 znaków

Rev
2015-11-06 17:43
Rev
Moderator

Rejestracja: 13 lat temu

Ostatnio: 1 tydzień temu

0

Jak ci się uda to dostaniesz nawet trochę kasy: https://hackerone.com/apache


Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0