How They Hack: Buffer Overflow & GDB Analysis - James Lyne

Поділитися
Вставка
  • Опубліковано 24 бер 2015
  • Following on from the simple buffer overflow demonstration this shows a more focused use of the ability to overwrite data enabling an attacker to control the return pointer and have the computer execute alternative code. We step through a simple binary, identify the flaw and then exploit it. This video will likely raise more security and exploitation questions than answer them (it is a big topic) but I hope that it inspires interest and enhances your understanding a little.
  • Наука та технологія

КОМЕНТАРІ • 85

  • @muhammadkashif4216
    @muhammadkashif4216 3 дні тому

    This is literally some of the best and practical explaination conveyed so nicely, a low level stuff (pun intended :D), great respect

  • @mrbangkockney
    @mrbangkockney 6 років тому +21

    Seems you’ve stopped posting vids...but this is by far the best intro to BO and gdp our there. I salute you good sir, and please come back!

    • @TechinalBibek
      @TechinalBibek 3 роки тому

      True

    • @TheRealKitWalker
      @TheRealKitWalker 2 роки тому

      I agree. This was so much fun watching a BO practical example. I quite enjoyed it. 🤟✌️👏👏👏

  • @OVVAISNAB
    @OVVAISNAB 2 роки тому

    Best video explanation of this seemingly complicated topic, thank you!

  • @shyngyskerimbekov2514
    @shyngyskerimbekov2514 5 років тому +1

    I am delighted, acquire so much understandable infromations , TY man!

  • @segintendorocks
    @segintendorocks 6 років тому +14

    This guy is freaking awesome. He explains it so much better than my professor :D.

  • @bjarkismari
    @bjarkismari Рік тому +5

    How did you find the return pointer just by looking at the stack?

  • @trishaatluri
    @trishaatluri 6 років тому +1

    sooo helpful - would have been up all night doing my pset if it weren't for this video

  • @rj-nj3uk
    @rj-nj3uk 5 років тому +3

    Hi James, very nice video. I am interested in system programming, and it is so difficult to find a tutorial video like this. Please don't stop.

  • @JannisAdmek
    @JannisAdmek 3 роки тому

    This video was so helpful, I watched it twice :)

  • @etienneboutet7193
    @etienneboutet7193 5 років тому +1

    Amazing explanation. Thanks a lot

  • @manojamrutharaj9071
    @manojamrutharaj9071 2 роки тому

    Thanks for this wonderful analysis video....

  • @ca7986
    @ca7986 3 роки тому +1

    This video is really high quality content!

  • @rootdev8106
    @rootdev8106 5 років тому

    Thank you for your awesome how-to!

  • @BeSharpInCSharp
    @BeSharpInCSharp 4 роки тому +8

    The only thing that is NOT CLEAR from this video is how you guessed the return address? How did you know exactly which address should be replaced by B ascii values?

  • @mohammadahmedragab837
    @mohammadahmedragab837 2 роки тому

    thank you so much for clear explanation. Please where can I find a full course of your courses ?

  • @nnamdyjunior
    @nnamdyjunior 8 років тому +4

    beautiful!!! just what I was after!

  • @GURUYATHI
    @GURUYATHI 6 років тому +1

    I understood properly, thank you sir for the video

    • @anoopjohn9062
      @anoopjohn9062 6 років тому

      Could you explain how do we identify the return address?

    • @adityashrest5886
      @adityashrest5886 5 років тому

      anoop john by radarex

  • @evilmulle4228
    @evilmulle4228 5 років тому

    When you print the stack with x/##x $esp, the first address that you call the offset, is that just the first address of the following 4 * 4 bytes?

  • @omarAhmed-wt8kx
    @omarAhmed-wt8kx 6 років тому

    Another good one keep up you have good representation way

  • @quaxiscorporationforresear5557
    @quaxiscorporationforresear5557 7 років тому

    Great video sir!

  • @surajkushwah3221
    @surajkushwah3221 5 років тому

    awesome video explained so much

  • @stevecross9159
    @stevecross9159 2 роки тому

    James- great video

  • @User-cv4ee
    @User-cv4ee 4 роки тому

    Why does the stack store new data towards the return pointer? Wouldn't going the opposite way ensure rp is never touched?

  • @ahmedlimam2241
    @ahmedlimam2241 4 роки тому

    Thank youuuuu I have a little problem, saying that I can write into the buffer through an argv[1] once I figure how much character I need and I figute what the return pointer address is, if I execute ./program my payload + p32(address I need in hex) when I check gdb the return address changed but not to the address I need it to be, as if it read the "\" and the "x" of the little endian p32 as a value on their own, how can I change that?

  • @pwn0x80
    @pwn0x80 6 років тому +1

    Your legends sir your best ... You rock ..

  • @amjadhammoudeh7954
    @amjadhammoudeh7954 5 років тому

    much appreciation mate

  • @mantas9826
    @mantas9826 5 років тому

    Well explained. I got the flag I was looking for.

  • @tj6193
    @tj6193 5 років тому

    I'm finally getting it!!! 🎉

  • @yungrolex1992
    @yungrolex1992 7 років тому

    how do i ignore the gcc errors because of the implicit declarations of the "gets" function

  • @theashmedai007
    @theashmedai007 5 років тому

    More videos plzz ..
    Is it possible to exploit packet buffer overflow due to slow data rate

  • @prakashshiv2586
    @prakashshiv2586 8 років тому

    This is awesome

  • @theashmedai007
    @theashmedai007 5 років тому

    Thank you sooo much

  • @harishkhattar6009
    @harishkhattar6009 6 років тому

    Which software is this?

  • @claudiocostanzo2140
    @claudiocostanzo2140 10 місяців тому

    I do the same exact step but i only have seg fault. Can It be because the Memory region of my eip( return pointer) Is only readable?

  • @SuperWhatusername
    @SuperWhatusername 3 роки тому

    Superb

  • @sandeepbaldawa9146
    @sandeepbaldawa9146 4 роки тому

    V well explained

  • @alex595659
    @alex595659 5 місяців тому

    If i want to put a shellcode , the return address is the bottom of the stacj ,isn't it ?

  • @kooners6961
    @kooners6961 5 років тому +9

    8:50 I'm really confused on how he can tell it's the return pointer

    • @tlehloba
      @tlehloba 5 років тому +2

      Exactly my point. how do u determine the return pointer

    • @rootabeta9015
      @rootabeta9015 4 роки тому

      @@tlehloba Usually, trial and error

    • @kraken3950
      @kraken3950 4 роки тому +7

      You can find it out by checking push/pop instructions, which push items onto the stack frame or pop from it , in the disassembled function. The return pointer of a function is pushed on the stack when it's called,.

    • @enesozdemir9973
      @enesozdemir9973 4 роки тому

      @@kraken3950 thank you mann you saved the day

  • @sharpspoon2
    @sharpspoon2 3 роки тому

    good stuff

  • @kathiravankathir3089
    @kathiravankathir3089 3 роки тому

    awesome

  • @stefeyes9819
    @stefeyes9819 5 років тому

    You do know u used the same superman lone in both buffer videos right? Haha just teasing thank you for answering questions that nobody else could

  • @madimy
    @madimy 8 років тому

    what if we do not have an $esp register after the gets function? instead I have $rax register

    • @portgas3
      @portgas3 7 років тому +1

      its 64-bit application,you will find $rsp instead of $esp

  • @mustaphachakiri3407
    @mustaphachakiri3407 5 років тому

    >>Thank U so much

  • @santoshkumarpanda1180
    @santoshkumarpanda1180 6 років тому +2

    How to identify the return pointer?

    • @breakingcode92
      @breakingcode92 6 років тому +1

      first you do break main, then when you run and it hits the first break point at main you can do info frame and it will give you the rbp/ebp (depending on whether you run on 64 or 32 bit architecture). It will also give you the eip/rip this is the location of the return pointer

  • @siddharthpandey3417
    @siddharthpandey3417 4 роки тому

    Anybody else getting a cannot access memory address error after setting breakpoints?

  • @ibrahimgambo4904
    @ibrahimgambo4904 Місяць тому

  • @GiQQ
    @GiQQ 7 років тому

    Why does the address of the granted function needs to be written down in little endian?

    • @breakingcode92
      @breakingcode92 6 років тому

      because the value we are storing at a particular memory address must be stored in hex. Little endian specifies that it is already in hex otherwise we would not be able to differentiate between python string or python reference to hex value

  • @ruslanlion1999
    @ruslanlion1999 5 років тому +3

    Кто сделал лабу? В лс скиньте плез)

  • @keerthikumark.g2135
    @keerthikumark.g2135 6 років тому

    teach me more about hacking an android device

  • @theashmedai007
    @theashmedai007 5 років тому

    The code is not compiling

  • @modelfreak125
    @modelfreak125 7 місяців тому

    This does not work! maybe it did on what ever system you used ? But it doesn't work on unbuntu 20.04, cannot over write return of gets, no matter what I try!

  • @abayzhunus5085
    @abayzhunus5085 8 років тому +4

    ne och

    • @user-kd2vv5pd1g
      @user-kd2vv5pd1g 8 років тому +1

      +Abay Zhunus главное дедлайн продлили)

    • @diegrootam
      @diegrootam 7 років тому

      ai dento

  • @olzhaskairzhanov8090
    @olzhaskairzhanov8090 5 років тому

    Тем временем до дедлайна 47 минут

  • @-makhmutov-
    @-makhmutov- 6 років тому +3

    Че там 8 лабка ма? ахахахахха

    • @CorpOfHack
      @CorpOfHack 6 років тому

      Какая ? )

    • @ruslanlion1999
      @ruslanlion1999 5 років тому +1

      В будущем это уже 7я лаба)😂

  • @MRX-xe3qf
    @MRX-xe3qf 5 років тому

    Instead of 0x41414141 I get 0x565561f5 which is my ret address.

    • @leesmith1609
      @leesmith1609 3 роки тому

      I got the address working when I used the example code from kuafu1994.github.io/HackWithGDB/ASM.html

  • @tsunningwah3471
    @tsunningwah3471 3 місяці тому

    nbbbbbnbnbnkjbjkbjkbjkbjkbjkbjkbjkbjkbkjbjkb

  • @starboy832
    @starboy832 9 років тому

    Has anyone really been far even as decided to use even go want to do look more like?

    • @sheamus69
      @sheamus69 8 років тому +2

      Oatify Er... take a deep breath and then try again...

  • @anthonyparra9553
    @anthonyparra9553 5 років тому

    you don't use nano? I can't watch this.

  • @otreciasgeltonas8624
    @otreciasgeltonas8624 2 роки тому

    Seems like finally some1 explained properly without much hassle. :))

  • @sohaibesohaib2914
    @sohaibesohaib2914 Рік тому

    can I have your linkedin account i've a challnge for u

  • @anoopjohn9062
    @anoopjohn9062 6 років тому +3

    How to identify the return pointer?

    • @breakingcode92
      @breakingcode92 6 років тому +5

      first you do break main, then when you run and it hits the first break point at main you can do info frame and it will give you the rbp/ebp (depending on whether you run on 64 or 32 bit architecture). It will also give you the eip/rip this is the location of the return pointer.

    • @tlehloba
      @tlehloba 5 років тому

      @@breakingcode92 How do you determine eip/rip?